算法_二叉树先序遍历

二叉树定义:如图-

 

二叉树是每个节点最多有两个子树:左子树、右子树

 

二叉树遍历顺序:

先序遍历、中序遍历、后序遍历 

 

二叉树用到两个关键点:

节点类:含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]

 

posted on 2018-03-12 23:50  梦断风陵渡口  阅读(211)  评论(0)    收藏  举报

导航