写点什么

Python 实现二叉树前序,中序,后序,三面美团 Python 岗

作者:程序媛可鸥
  • 2022 年 3 月 21 日
  • 本文字数:1290 字

    阅读完需:约 4 分钟

self.middle_recursion(root.r_child)


def back_recursion(self, root):


"""利用递归实现树的后序遍历"""


if root is None:


return


self.back_recursion(root.l_child)


self.back_recursion(root.r_child)


print root.element,


@staticmethod


def front_stack(root):


"""利用堆栈实现树的前序遍历"""


if root is None:


return


stack = []


node = root


while node or stack:

从根节点开始,一直找它的左子树

while node:


print node.element,


stack.append(node)


node = node.l_child

while 结束表示当前节点 node 为空,即前一个节点没有左子树了

node = stack.pop()

开始查看它的右子树

node = node.r_child


@staticmethod


def middle_stack(root):


"""利用堆栈实现树的中序遍历"""


if root is None:


return


stack = []


node = root


while node or stack:

从根节点开始,一直找它的左子树

while node:


stack.append(node)


node = node.l_child

while 结束表示当前节点 node 为空,即前一个节点没有左子树了

node = stack.pop()


print node.element,

开始查看它的右子树

node = node.r_child


@staticmethod


def back_stack(root):


"""利用堆栈实现树的后序遍历"""


if root is None:


return


stack1 = []


stack2 = []


node = root


stack1.append(node)

这个 while 循环的功能是找出后序遍历的逆序,存在 stack2 里面

while stack1:


node = stack1.pop()


if node.l_child:


stack1.append(node.l_child)


if node.r_child:


stack1.append(node.r_child)


stack2.append(node)

将 stack2 中的元素出栈,即为后序遍历次序

while stack2:


print stack2.pop().element,


@staticmethod


def level_queue(root):


"""利用队列实现树的层次遍历"""


if root is None:


return


queue = []


node = root


queue.append(node)


while queue:


node = queue.pop(0)


print node.element,


if node.l_child is not None:


queue.append(node.l_child)


if node.r_child is not None:


queue.append(node.r_child)


if name == 'main':


"""主函数"""

生成十个数据作为树节点

elements = range(10)


tree = Tree()


for elem in elements:


tree.add_node(elem)


print '队列实现层次遍历:'


tree.level_queue(tree.root)


print '\n\n 递归实现前序遍历:'


tree.front_recursion(tree.root)


print '\n 递归实现中序遍历:'


tree.middle_recursion(tree.root)


print '\n 递归实现后序遍历:'


tree.



back_recursion(tree.root)


(1)Python 所有方向的学习路线(新版)


这是我花了几天的时间去把 Python 所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。


最近我才对这些路线做了一下新的更新,知识体系更全面了。



(2)Python 学习视频


包含了 Python 入门、爬虫、数据分析和 web 开发的学习视频,总共 100 多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。



(3)100 多个练手项目


我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。



用户头像

Python编程资料加Q群免费领取:419829237 2022.03.14 加入

还未添加个人简介

评论

发布
暂无评论
Python 实现二叉树前序,中序,后序,三面美团Python岗_Python_程序媛可鸥_InfoQ写作平台