python 生成满二叉树并进行深度优先搜索和宽度优先搜索

本文介绍了一种构建固定深度二叉树的方法,并实现了深度优先与宽度优先两种遍历方式,通过具体代码展示了节点的生成及遍历过程。
# -*- coding: UTF-8 -*-



from __future__ import print_function
deep = 3

#二叉树*******************************start

L = []
LW = []
class TreeNode(object):
    def __init__(self,data,left,right):
        self.data = data
        self.left = left
        self.right = right



def add_tree_node(tn,count=1):
    _deep = tn.data['deep']
    if  _deep < deep:
        #右子孙
        # print(_deep)
        temp = TreeNode({'deep':_deep+1,'node_num':count+1}, None, None)
        tn.right = temp
        print(tn.data['node_num'])
        count = add_tree_node(temp,count+1)
        #左子孙
        temp = TreeNode({'deep':_deep+1,'node_num':count+1},None,None)
        tn.left = temp
        print(tn.data['node_num'])
        count = add_tree_node(temp,count+1)
    return count

stack = []


def deep_travel_tree(tn):
    #读取当前节点并压入栈
    L.append(tn.data['node_num'])
    if tn.right != None:
        deep_travel_tree(tn.right)
    if tn.left != None:
        deep_travel_tree(tn.left)
    return


def width_travel_tree(tn):
    #压入节点
    LW.append(tn.data['node_num'])
    if tn.right != None and tn.left != None:
        stack.append(tn.right)
        stack.append(tn.left)
    if len(stack)!=0:
        temp = stack.pop(0)
        width_travel_tree(temp)
    return



def main():
    root =  TreeNode({'deep':1,'node_num':1},None,None)
    add_tree_node(root)
    deep_travel_tree(root)
    width_travel_tree(root)
    print(L)
    print(LW)

main()
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值