算法_二叉树先序遍历
二叉树定义:如图-
二叉树是每个节点最多有两个子树:左子树、右子树
二叉树遍历顺序:
先序遍历、中序遍历、后序遍历
二叉树用到两个关键点:
节点类:含3个属性:节点值、左节点、右节点
实例属性:根
先序遍历的代码:
# encoding=utf-8 #先序遍历 class TreeNode(object):#节点类 def __init__(self,val,left=None,right=None): self.val = val self.left = left self.right = right class BinaryTree(object): def __init__(self,root=None):#定义实例属性root节点 self.root = root def preScan(retList,node): if node != None: retList.append(node.val)#先访问根节点 preScan(retList,node.left)#递归调用左子树 preScan(retList,node.right)#递归调用右子树 return retList if __name__ =='__main__':
#测试代码 root = TreeNode(50)#定义根节点 root.left = TreeNode(40,left=TreeNode(30),right=TreeNode(70)) root.right = TreeNode(10,right=TreeNode(8)) bTree = BinaryTree(root) retList = preScan([],bTree.root) print retList
打印结果:
[50, 40, 30, 70, 10, 8]
大圣此去欲何?踏南天,碎凌霄!若大圣此去不返……?便一去不返!
浙公网安备 33010602011771号