数据结构Python实现-二叉树的前序中序后序遍历

二叉树前序中序后序排序

前序:根-左-右
中序:左-根-右
后序:左-右-根

二叉树遍历代码

#先构造树,然后再进行前序中序后序遍历
#class是一个类,一个类里面包含很多个属性

class Tree:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

    def get(self):
        return self.data    

    def getLeft(self):      #getleft方法,返回其节点的左子树,即指向节点的左子树
        return self.left

    def getRight(self):     #getright方法,返回其节点的右子树,即指向节点的右子树 
        return self.right

    def setLeft(self, node):  #存入节点的数值
        self.left = node

    def setRight(self, node):  #存入节点的数值
        self.right = node
    
binaryTree = Tree(0)
binaryTree.setLeft(Tree(1))
binaryTree.setRight(Tree(2))
binaryTree.getLeft().setLeft(Tree(3))  #找到树节点的左子树节点
binaryTree.getLeft().setRight(Tree(4))
binaryTree.getRight().setLeft(Tree(5))
binaryTree.getRight().setRight(Tree(6))


def preorderTraversal(now, result=[]): #传递两个参数值,一个是要访问的节点,一个是遍历结果存放的数组
    if now == None:
        return result
    result.append(now.data)
    preorderTraversal(now.left, result)
    preorderTraversal(now.right, result)
    return result

print(preorderTraversal(binaryTree))

def intermediateTraversal(now, result=[]):
    if now == None:
        return result
    intermediateTraversal(now.left, result)
    result.append(now.data)
    intermediateTraversal(now.right, result)
    return result

print(intermediateTraversal(binaryTree))

def postorderTraversal(now, result=[]):
    if now == None:
        return
    postorderTraversal(now.left, result)
    postorderTraversal(now.right, result)
    result.append(now.data)
    return result

print(postorderTraversal(binaryTree))

编程问题

不知道怎么定义,首先要先定义一个树,树相当于一个类,类里面先定义本身所具有的的属性。构建完了树之后在进行函数前序中序后序遍历代码的书写。

发布了40 篇原创文章 · 获赞 1 · 访问量 2037

猜你喜欢

转载自blog.csdn.net/qq_40660825/article/details/102552003
今日推荐