”自定义二叉树结构“

下面代码实现了二叉树结构,实现二叉树的创建,插入子节点以及前序遍历,中序遍历和后序遍历等遍历方式,同时还支持二叉树中任意子树的节点遍历。

 

class BinaryTree:
    def __init__(self,value):
        self._left=None
        self._right=None
        self._data=value

    def insertLeftChild(self,value):        #创建左子树
        if self._left:
            print('left child tree already exists.')
        else:
            self._left=BinaryTree(value)
            return self._left

    def insertRightChild(self,value):          #创建右子树
        if self._right:
            print('right child tree already exists.')
        else:
            self._right=BinaryTree(value)
            return self._right

    def show(self):
        print(self._data)

    def preOrder(self):       #前序遍历(根左右)
        print(self._data)
        if self._left:
            self._left.preOrder()
        if self._right:
            self._right.preOrder()

    def postOrder(self):               #后序遍历(左右根)
        if self._left:
            self._left.postOrder()
        if self._right:
            self._right.postOrder()
        print(self._data)

    def inOrder(self):             #中序遍历(左根右)
        if self._left:
            self._left.inOrder()
        print(self._data)
        if self._right:
            self._right.inOrder()

if __name__=='__main__':
    print('Please use me as a module.')

 

 将上述代码保存为BinaryTree.py文件,下面的代码创建了下图所示的二叉树,并对该二叉树进行遍历。

 1 ==== RESTART: C:/Users/Administrator/Desktop/时间宝/python/BinaryTree.py ====
 2 Please use me as a module.
 3 >>> import BinaryTree
 4 >>> root=BinaryTree.BinaryTree('root')
 5 >>> b=root.insertRightChild('B')
 6 >>> a=root.insertLeftChild('A')
 7 >>> c=a.insertLeftChild('c')
 8 >>> d=b.insertRightChild('D')
 9 >>> e=c.insertLeftChild('E')
10 >>> f=e.insertLeftChild('F')
11 >>> root.inOrder()
12 F
13 E
14 c
15 A
16 root
17 B
18 D
19 >>> root.inOrder()
20 F
21 E
22 c
23 A
24 root
25 B
26 D
27 >>> root.postOrder()
28 F
29 E
30 c
31 A
32 D
33 B
34 root
35 >>> b.inOrder()
36 B
37 D

以上就是我的今日总结,有什么问题或者错误可以告诉我哟!
继续加油,努力!