最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python中如何遍历树

    正文概述    2020-01-21   353

    python中如何遍历树

    各种遍历顺序如下图所示:

    python中如何遍历树

    树的最大深度 

    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution(object):
        def maxdepth(self, root):
            if root is None:
                return 0
            return max(self.maxdepth(root.left), self.maxdepth(root.right))+1

    深度优先

    深度优先遍历有三种方式:前序遍历、中序遍历和后序遍历

    所说的前序、中序、后序,是指根节点的先后顺序。

    前序遍历:根节点 -> 左子树 -> 右子树

    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution(object):
        def preorder(self, root):
            if root is None:
                return ''
            print root.val
            if root.lef:
                self.preorder(root.left)
            if root.right:
                self.preorder(root.right)

    中序遍历:左子树 -> 根节点 -> 右子树

    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution(object):
        def midorder(self, root):
            if root is None:
                return ''
            if root.lef:
                self.midorder(root.left)
            print root.val
            if root.right:
                self.midorder(root.right)

    后序遍历:左子树 -> 右子树 -> 根节点

    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution(object):
        def endorder(self, root):
            if root is None:
                return ''
            if root.lef:
                self.endorder(root.left)
            if root.right:
                self.endorder(root.right)
            print root.val

    广度优先

    广度优先遍历,即层次遍历,优先遍历兄弟节点

    层次遍历:根节点 -> 左节点 -> 右节点

    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution(object):
      def graorder(self, root):
        if root is None:
          return ''
        queue = [root]
        while queue:
          res = []
          for item in queue:
            print item.val,
            if item.left:
              res.append(item.left)
            if item.right:
              res.apppend(item.right)
          queue = res

    比较两棵树是否相同

    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution(object):
        def issame(self, root1, root2):
            if root1 is None and root2 is None:
                return True
            elif root1 and root2:
                return root1.val==root2.val and issame(root1.left, root2.left) and issame(root1.right, root2.right)
            else:
                return False

    众多python培训视频,尽在python学习网,欢迎在线学习!


    下载网 » python中如何遍历树

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元