0
点赞
收藏
分享

微信扫一扫

2.10_binary_tree_二叉树的创建和遍历

草原小黄河 2022-02-12 阅读 78
class BiTreeNode(object):
    """节点链接法"""

    def __init__(self, data):
        self.data = data
        self.lchild = None
        self.rchild = None


a = BiTreeNode('A')
b = BiTreeNode('B')
c = BiTreeNode('C')
d = BiTreeNode('D')
e = BiTreeNode('E')
f = BiTreeNode('F')
g = BiTreeNode('G')

e.lchild = a
e.rchild = g
a.rchild = c
c.lchild = b
c.rchild = d
g.rchild = f

root = e
print(root.lchild.rchild.data)

 

def pre_order(root):
    """二叉树的前序遍历"""

    if root:
        print(root.data, end=', ')
        pre_order(root.lchild)
        pre_order(root.rchild)
def in_order(root):
    """二叉树的中序遍历"""

    if root:
        in_order(root.lchild)
        print(root.data, end=', ')
        in_order(root.rchild)
def post_order(root):
    """二叉树的后序遍历"""

    if root:
        post_order(root.lchild)
        post_order(root.rchild)
        print(root.data, end=', ')
from collections import deque


def level_order(root):
    """二叉树的层次遍历"""

    q = deque()
    q.append(root)

    while len(q) > 0:
        node = q.popleft()
        print(node.data, end=', ')
        if node.lchild:
            q.append(node.lchild)
        if node.rchild:
            q.append(node.rchild)

 

举报

相关推荐

0 条评论