Python 数据结构实现,递归算法

目录

链表

二叉树

递归算法


数据结构实质是一个容器类型的对象

链表

高频进行元素的添加和删除,内存空间是不连续的。

节点Node类

class Node():
    def __init__(self,item):
        self.item = item
        self.next = None

n1 = Node(1)

链表Link类

有序的组织所有的节点,

class Link():
    #构建一个空链表
    def __init__(self):
      self.head = None
link = Link()

链表的完整操作

定义节点类和链表类,在链表类中定义方法:遍历,判空,增删节点。

链表类中写入节点对象,及调用方法。

#定义节点类
class Node():
    def __init__(self,item):
        self.item = item
        self.next = None

#构建一个空链表
class Link():
    def __init__(self):
        self.head = None
    
    # 头插法,包含节点变量
    def addByHead(self,item):
        node = Node(item)   #创建一个新的节点对象,此处引入节点类
        node.next = self.head
        self.head = node
        
    # 遍历链表
    def travel(self):
        cur = self.head
        while cur:
            print(cur.item) # 循环输出节点
            cur = cur.next

    #向链表尾部添加节点
    def append(self,item):
        pass
    #判断链表是否为空
    def isEmpty(self):
        pass
    #返回链表中节点数量
    def size(self):
        pass
    #向任意位置添加节点
    def insertNode(self,item,pos):
        pass
    #删除指定节点
    def removeNode(self,item):
        pass

link = Link() #创建了一个空链表对象
link.addByHead(1) # 调用方法
link.addByHead(2)
link.addByHead(3)
link.addByHead(4)
link.travel() #调用遍历方法

二叉树

根节点:树状结构中最上层的那一个节点。左右叶子节点:一个节点分叉出左右两个子节点子树

区分不同的子树:根据子树的根节点来别不同的子树。

节点类

class Node():
    def __init__(self,item):
        self.item = item   #节点值
        self.left = None   # 左右节点区分
        self.right = None

二叉树完整操作

二叉树遍历

深度遍历:前序:根左右  中序:左根右   后序:左右根

广度遍历:层次遍历

递归算法

递归遍历二叉树     前序遍历:

def forward(self,root):  # 定义函数和根节点
    if root == None:
        return
    print(root.item)
    self.forward(root.left) #改变参数,并调用函数自身
    self.forward(root.right)

#函数调用
forward(tree.root) #调用从根节点开始

其他递归实例:高斯求和问题,1+2+3+4+…+99+100

def sum_number(n): 
    if n <= 0:
        return 0  
    else:
        sum=sum_number(n-1) #调用执行sum_number函数的下一个参数
        return n + sum #函数结果

result = sum_number(5) #递归函数值
print(result)

'''# 普通循环操作解释
    result = 5 + sum_number(4)
    sum_number(4) = 4 + sum_number(3)
    sum_number(3) = 3 + sum_number(2)
    sum_number(2) = 2 + sum_number(1)
    sum_number(1) = 1 + sum_number(0)  

你可能感兴趣的:(python)