繁体   English   中英

使用列表遍历二叉树

[英]Traversing a binary tree using a list

代码.py

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

def inOrder(root):
    if root:
        inOrder(root.left)
        print (root.data)
        inOrder(root.right)

def preOrder(root):
    if root:
        print (root.data)
        preOrder(root.left)
        preOrder(root.right)

def postOrder(root):
    if root:
        postOrder(root.left)
        postOrder(root.right)
        print (root.data)

我通过使用 class 创建节点来实现二叉树遍历。 我现在想只使用一个列表而不使用 class 来实现二叉树遍历。

树 = [1, [2, [4,[],[]], [5,[],[]] ], [3, [], []] ]

我想知道如何使用这个列表来实现它。 这对我来说太难了。

作为列表的二叉树看起来相当简单。

数据是node/sub_arr[0] ,左节点是另一个子数组sub_arr[1] ,右节点是sub_arr[2]

在代码中。 我只是将node.left替换为tree[1]node.right替换为tree[2] ] , d data替换为tree[0]

Tree = [1, [2, [4, [], []], [5, [], []]], [3, [], []]]


def inOrder(tree):
    if tree:
        inOrder(tree[1])  # Left
        print(tree[0])
        inOrder(tree[2])  # Right


def preOrder(tree):
    if tree:
        print(tree[0])
        preOrder(tree[1])  # Left
        preOrder(tree[2])  # Right


def postOrder(tree):
    if tree:
        postOrder(tree[1])  # Left
        postOrder(tree[2])  # Right
        print(tree[0])


print('In order')
inOrder(tree=Tree)
print('Pre Order')
preOrder(tree=Tree)
print('Post Order')
postOrder(tree=Tree)

#Output
In order
4
2
5
1
3
Pre Order
1
2
4
5
3
Post Order
4
5
2
3
1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM