1. 程式人生 > >Python實現深度遍歷和廣度遍歷

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)