最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

分享python实现的二叉树定义与遍历

来源:动视网 责编:小采 时间:2020-11-27 14:14:01
文档

分享python实现的二叉树定义与遍历

分享python实现的二叉树定义与遍历:这篇文章主要介绍了python实现的二叉树定义与遍历算法,结合具体实例形式分析了基于Python定义的二叉树及其常用遍历操作实现技巧,需要的朋友可以参考下本文实例讲述了python实现的二叉树定义与遍历算法。分享给大家供大家参考,具体如下:初学python,需
推荐度:
导读分享python实现的二叉树定义与遍历:这篇文章主要介绍了python实现的二叉树定义与遍历算法,结合具体实例形式分析了基于Python定义的二叉树及其常用遍历操作实现技巧,需要的朋友可以参考下本文实例讲述了python实现的二叉树定义与遍历算法。分享给大家供大家参考,具体如下:初学python,需
 这篇文章主要介绍了python实现的二叉树定义与遍历算法,结合具体实例形式分析了基于Python定义的二叉树及其常用遍历操作实现技巧,需要的朋友可以参考下

本文实例讲述了python实现的二叉树定义与遍历算法。分享给大家供大家参考,具体如下:

初学python,需要实现一个决策树,首先实践一下利用python实现一个二叉树数据结构。建树的时候做了处理,保证建立的二叉树是平衡二叉树。

# -*- coding: utf-8 -*-
from collections import deque
class Node:
 def init(self,val,left=None,right=None):
 self.val=val
 self.left=left
 self.right=right
 #setter and getter
 def get_val(self):
 return self.val
 def set_val(self,val):
 self.val=val
 def get_left(self):
 return self.left
 def set_left(self,left):
 self.left=left
 def get_right(self):
 return self.right
 def set_right(self,right):
 self.right=right
class Tree:
 def init(self,list):
 list=sorted(list)
 self.root=self.build_tree(list)
 #递归建立平衡二叉树
 def build_tree(self,list):
 l=0
 r=len(list)-1
 if(l>r):
 return None
 if(l==r):
 return Node(list[l])
 mid=(l+r)/2
 root=Node(list[mid])
 root.left=self.build_tree(list[:mid])
 root.right=self.build_tree(list[mid+1:])
 return root
 #前序遍历
 def preorder(self,root):
 if(root is None):
 return
 print root.val
 self.preorder(root.left)
 self.preorder(root.right)
 #后序遍历
 def postorder(self,root):
 if(root is None):
 return
 self.postorder(root.left)
 self.postorder(root.right)
 print root.val
 #中序遍历
 def inorder(self,root):
 if(root is None):
 return
 self.inorder(root.left)
 print root.val
 self.inorder(root.right)
 #层序遍历
 def levelorder(self,root):
 if root is None:
 return
 queue =deque([root])
 while(len(queue)>0):
 size=len(queue)
 for i in range(size):
 node =queue.popleft()
 print node.val
 if node.left is not None:
 queue.append(node.left)
 if node.right is not None:
 queue.append(node.right)
list=[1,-1,3,4,5]
tree=Tree(list)
print '中序遍历:'
tree.inorder(tree.root)
print '层序遍历:'
tree.levelorder(tree.root)
print '前序遍历:'
tree.preorder(tree.root)
print '后序遍历:'
tree.postorder(tree.root)

输出:

中序遍历
-1
1
3
4
5
层序遍历
3
-1
4
1
5
前序遍历
3
-1
1
4
5
后序遍历
1
-1
5
4
3

建立的二叉树如下图所示:

文档

分享python实现的二叉树定义与遍历

分享python实现的二叉树定义与遍历:这篇文章主要介绍了python实现的二叉树定义与遍历算法,结合具体实例形式分析了基于Python定义的二叉树及其常用遍历操作实现技巧,需要的朋友可以参考下本文实例讲述了python实现的二叉树定义与遍历算法。分享给大家供大家参考,具体如下:初学python,需
推荐度:
标签: 分享 定义 python
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top