完全二叉树和三序遍历算法(先序)(上)

完全二叉树先序遍历
 
完全二叉树概念:
1、没有叶子节点得都在最后两层
2、且最后一层得节点都集中在左边,倒数第二层没有空节点
 
先序遍历
先遍根节点,再遍历左子树,再到右子树
中序遍历
先遍历左子数,再遍历根节点再遍历右子树
后序遍历
先遍历左子树,再遍历右子树,再遍历根节点
 
    创建二叉树:
>>> class TreeNode():
...     def __init__(self,var,left=None,right=None):
...         self.var=var
...         self.left=left
...         self.right=right
...
>>> class BinaryTree():
...     def __init__(self,root):
...         self.root=root
 
  先序遍历算法:
>>> def PreOrder(retlist,node):
...     if node!=None:#如果节点为空就可以直接退出,完全二叉树开始为空得节点后开始就不会再有节点内容
...         retlist.append(node)#先输出根节点
...         retlist.append(node.left)#再输出左节点
...         retlist.append(node.right)#再输出右节点
...     return retlist
 
  创建二叉树:
>>> x=TreeNode(1)#添加根节点
>>> x.left=TreeNode(2,left=TreeNode(4,left=TreeNode(8),right=TreeNode(9)))#添加根节点下得左节点部分
>>> x.right=TreeNode(3,left=TreeNode(12))#与上相反
 
  先序算法读取二叉树:
>>> try:
...     result=PreOrder([],binarytree.root)
... except:
...     traceback.print_exc()
 
posted @ 2019-07-14 21:32  张特别  阅读(646)  评论(0编辑  收藏  举报