树的遍历方式

                                                  树的遍历方式

 

1、树图:

    

2、先(根)序遍历:

class BinTreeNode():
    def __init__(self, value, left=None, right=None):
        self.value, self.left, self.right = value, left, right


class BinTree():
    def __init__(self, root=None):
        self.root = root

    def preTraverse(self, root):
        """先(根)序遍历"""
        if root is None:
            return
        print(root.value)   # 递归处理根
        self.preTraverse(root.left)     # 递归处理左子树
        self.preTraverse(root.right)    # 递归处理右子树


if __name__ == "__main__":
    root = BinTreeNode("D",
                       BinTreeNode("B",
                                   BinTreeNode("A"), BinTreeNode("C")
                                   ),
                       BinTreeNode("E",
                                   BinTreeNode("F"),
                                   BinTreeNode("G", BinTreeNode("H"))
                                   )
                       )
    tree = BinTree()
    print("先(根)序遍历:")
    tree.preTraverse(root)

    先(根)序遍历:
    D
    B
    A
    C
    E
    F
    H
    G

3、中(根)序遍历:

class BinTreeNode():
    def __init__(self, value, left=None, right=None):
        self.value, self.left, self.right = value, left, right


class BinTree():
    def __init__(self, root=None):
        self.root = root

    def midTraverse(self, root):
        """中(根)序遍历"""
        if root is None:
            return
        self.midTraverse(root.left)  # 递归处理左子树
        print(root.value)  # 递归处理根
        self.midTraverse(root.right)  # 递归处理右子树


if __name__ == "__main__":
    root = BinTreeNode("D",
                       BinTreeNode("B",
                                   BinTreeNode("A"), BinTreeNode("C")
                                   ),
                       BinTreeNode("E",
                                   BinTreeNode("F"),
                                   BinTreeNode("G", BinTreeNode("H"))
                                   )
                       )
    tree = BinTree()
    print("中(根)序遍历:")
    tree.midTraverse(root)

    中(根)序遍历:
    A
    B
    C
    D
    H
    F
    E
    G

4、后(根)序遍历:

class BinTreeNode():
    def __init__(self, value, left=None, right=None):
        self.value, self.left, self.right = value, left, right


class BinTree():
    def __init__(self, root=None):
        self.root = root

    def afterTraverse(self, root):
        """后(根)序遍历"""
        if root is None:
            return
        self.afterTraverse(root.left)  # 递归处理左子树
        self.afterTraverse(root.right)  # 递归处理右子树
        print(root.value)  # 递归处理根


if __name__ == "__main__":
    root = BinTreeNode("D",
                       BinTreeNode("B",
                                   BinTreeNode("A"), BinTreeNode("C")
                                   ),
                       BinTreeNode("E",
                                   BinTreeNode("F"),
                                   BinTreeNode("G", BinTreeNode("H"))
                                   )
                       )
    tree = BinTree()
    print("后(根)序遍历:")
    tree.afterTraverse(root)

    后(根)序遍历:
    A
    C
    B
    H
    F
    G
    E
    D

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值