首页 > 编程语言 > 详细

【算法】【python实现】二叉树深度、广度优先遍历

时间:2019-02-18 19:57:45      阅读:234      评论:0      收藏:0      [点我收藏+]

  二叉树的遍历,分为深度优先遍历,以及广度优先遍历。

 

在深度优先遍历中,具体分为如下三种:

  • 先序遍历:先访问根节点,再遍历左子树,再遍历右子树;
  • 中序遍历:先遍历左子树,再访问根节点,再遍历右子树;
  • 后序遍历:先遍历左子树,再遍历右子树,再访问根节点;

 

技术分享图片

 

针对上图二叉树,三种遍历结果为:

  • 先序遍历:50,20,15,30,60,70
  • 中序遍历:15,20,30,50,60,70
  • 后序遍历:15,30,20,70,60,50

 

实现代码如下:

# 定义二叉树节点
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):
        self.root=root

    def preOrder(self,retList=[],node=‘root‘):
        if node!=None:
            retList.append(node)
            self.preOrder(retList,node.left)    # 递归调用,将左子节点放到列表里  
            self.preOrder(retList,node.right)    # 递归调用,将右节点放到列表里  
        return retList

    def inOrder(self,retList=[],node=‘root‘):
        if node!=None:
            self.inOrder(retList,node.left)
            retList.append(node)
            self.inOrder(retList,node.right)
        return retList
    def postOrder(self,retList=[],node=‘root‘):
        if node!=None:
            self.postOrder(retList,node.left)
            self.postOrder(retList,node.right)
            retList.append(node)
        return retList
                     

if __name__==‘__main__‘:
    rootNode=TreeNode(50)
    rootNode.left = TreeNode(20,left=TreeNode(15),right=TreeNode(30))
    rootNode.right = TreeNode(60,right=TreeNode(70))
    binaryTree=BinaryTree(rootNode)
    ret = binaryTree.preOrder([],binaryTree.root)
    for i in ret:
        print(i.val,end=‘.‘)
    print(‘\n‘+‘-‘*20)
    ret = binaryTree.inOrder([],binaryTree.root)
    for i in ret:
        print(i.val,end=‘.‘)
    print(‘\n‘+‘-‘*20)
    ret = binaryTree.postOrder([],binaryTree.root)
    for i in ret:
        print(i.val,end=‘.‘)
    

  

 

【算法】【python实现】二叉树深度、广度优先遍历

原文:https://www.cnblogs.com/lilip/p/10397212.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!