Python实现深度遍历和广度遍历

深度遍历:

原则:从上到下,从左到右

逻辑(本质用递归):

1)、找根节点

2)、找根节点的左边

3)、找根节点的右边

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


d = Node("D")
e = Node("E")
b = Node("B", d, e)
f = Node("F")
g = Node("G")
c = Node("C", f, g)
a = Node("A", b, c)


result = []


def deep_search(root):
    # 深度遍历 核心:递归
    result.append(root.item)
    if root.left:
        deep_search(root.left)
    if root.right:
        deep_search(root.right)
    return "-->".join(result)


print deep_search(a)

广度遍历:

核心:队列+递归

def wide_search(root, result=[]):
    
    if not result:
        result.append(root.item)
    if root.left:
        result.append(root.left.item)
    if root.right:
        result.append(root.right.item)
    if root.left:
        wide_search(root.left)
    if root.right:
        wide_search(root.right)
    return "-->".join(result)


print wide_search(a)


你可能感兴趣的:(算法)