python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)
2017-10-20 11:04
387 查看
python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)
树
树是n(n≥0)个结点的有限集。在任意一棵非空树中,有且只有一个根结点。二叉树是有限个元素的集合,该集合或者为空、或者有一个称为根节点(root)的元素及两个互不相交的、分别被称为左子树和右子树的二叉树组成。
二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。
二叉树的第i层至多有2^{i-1}个结点
深度为k的二叉树至多有2^k-1个结点;
对任何一棵二叉树T,如果其终端结点数为N0,度为2的结点数为N2,则N0=N2+1
例子
实现以下二叉树,并进行先序遍历、中序遍历和后序遍历。class BinaryTreeNode(object): def __init__(self, data=None, left=None, right=None): self.data = data self.left = left self.right = right class BinaryTree(object): def __init__(self, root=None): self.root = root def is_empty(self): return self.root == None def preOrder(self,BinaryTreeNode): if BinaryTreeNode == None: return # 先打印根结点,再打印左结点,后打印右结点 print(BinaryTreeNode.data) self.preOrder(BinaryTreeNode.left) self.preOrder(BinaryTreeNode.right) def inOrder(self,BinaryTreeNode): if BinaryTreeNode == None: return # 先打印左结点,再打印根结点,后打印右结点 self.inOrder(BinaryTreeNode.left) print(BinaryTreeNode.data) self.inOrder(BinaryTreeNode.right) def postOrder(self,BinaryTreeNode): if BinaryTreeNode == None: return # 先打印左结点,再打印右结点,后打印根结点 self.postOrder(BinaryTreeNode.left) self.postOrder(BinaryTreeNode.right) print(BinaryTreeNode.data) n1 = BinaryTreeNode(data="D") n2 = BinaryTreeNode(data="E") n3 = BinaryTreeNode(data="F") n4 = BinaryTreeNode(data="B", left=n1, right=n2) n5 = BinaryTreeNode(data="C", left=n3, right=None) root = BinaryTreeNode(data="A", left=n4, right=n5) bt = BinaryTree(root) print('先序遍历') bt.preOrder(bt.root) print('中序遍历') bt.inOrder(bt.root) print('后序遍历') bt.postOrder(bt.root)
程序运行结果:
先序遍历 A B D E C F 中序遍历 D B E A F C 后序遍历 D E B F C A [Finished in 0.1s]
相关文章推荐
- python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)
- Python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)
- 二叉树的先序遍历(preorder),中序遍历(inorder),后序遍历(postorder)
- 已知二叉树前序、中序遍历用python求后序遍历
- 二叉树先序创建和二叉树先序遍历、中序遍历和后序遍历
- 【郝斌数据结构自学笔记】66-69_森林的存储_二叉树的先序遍历_二叉树的中序遍历【中间访问根节点】_二叉树的后序遍历【最后访问根节点】
- 给定二叉树的先序遍历中序遍历,求后序遍历
- 数据结构--二叉树的创建、先序遍历、中序遍历、后序遍历、深度、叶子结点数
- 根据先序遍历中序遍历重建二叉树
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- 二叉树的遍历(先序遍历,中序遍历,后序遍历,层次遍历)
- python几种数据结构的实现:栈、队列及二叉树
- java实现二叉树的构建以及三种遍历方法(先序遍历,中序遍历,后续遍历)
- 先序遍历、中序遍历、后序遍历(二叉树)
- 【数据结构】二叉树的先序遍历
- Python数据结构之二叉树
- 二叉树的应用-先序遍历中序遍历还原二叉树
- 二叉树的先序遍历、中序遍历以及后序遍历(递归以及非递归方式)
- 二叉树-建树,层次遍历,先序遍历,中序遍历,后序遍历
- c语言实现二叉树的先序遍历,中序遍历,后序遍历