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)


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值