python 递归遍历二叉树

我确定很多人不能真正的理解二叉树……

这里写图片描述

class Node:  
    def __init__(self,value=0,left=0,right=0):  
        self.value=value  
        self.left=left    #左子树
        self.right=right  #右子树

def preTraverse(root):  
    '''
    前序遍历
    '''
    #print('#'*6)
    if root==0:
        #print('这个节点的值是',root)
        return 9 
    print(root.value)  
    preTraverse(root.left)  
    preTraverse(root.right)  

def midTraverse(root): 
    '''
    中序遍历
    '''
    if root==0:  
        #print('这个节点的值是',root)
        return  
    midTraverse(root.left)  
    print(root.value)  
    midTraverse(root.right)  

def afterTraverse(root):  
    '''
    后序遍历
    '''
    if root==0:  
        return  
    afterTraverse(root.left)  
    afterTraverse(root.right)  
    print(root.value)


if __name__=='__main__':
    root=Node('D',
                 Node('B',Node('A'),Node('C')),
                 Node('E',Node('G'),Node('F'))

                 )

    print('前序遍历:')
    preTraverse(root)
    print('\n')
    print('中序遍历:')
    midTraverse(root)
    print('\n')
    print('后序遍历:')
    afterTraverse(root)
    print('\n')
前序遍历:
D
B
A
C
E
G
F


中序遍历:
A
B
C
D
G
E
F


后序遍历:
A
C
B
G
F
E
D

先序遍历

对于二叉树的的遍历很可以用递归,递归很难理解,那我们就来捋一捋。

    if root==0:
        print('这个节点的值是',root)
        return 9
    print(root.value)
    preTraverse(root.left)
    preTraverse(root.right)

这里写图片描述

看懂这张图就看懂中序遍历

这里写图片描述

后序遍历
这里写图片描述

posted @ 2018-06-26 22:30  luoganttcc  阅读(307)  评论(0编辑  收藏  举报