Python 实现二叉树前序,中序,后序,2021年Python开发学习路线

“”“利用递归实现树的中序遍历”""

if root is None:

return

self.middle_recursion(root.l_child)

print root.element,

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

Python 实现二叉树前序,中序,后序,2021年Python开发学习路线_第1张图片

)

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)

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

Python 实现二叉树前序,中序,后序,2021年Python开发学习路线_第2张图片

你可能感兴趣的:(程序员,面试,经验分享,开发语言)