Python實現深度遍歷和廣度遍歷
阿新 • • 發佈:2019-01-01
深度遍歷:
原則:從上到下,從左到右
邏輯(本質用遞迴):
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)