zoukankan      html  css  js  c++  java
  • 树的遍历(前中后层)python

    中序遍历:

    #左中右
    #递归实现
    def inorderTraversal(self, root):
        if root==None:
            return []
        return self.inorderTraversal(root.left)+[root.val]+self.inorderTraversal(self.right)
    
    #遍历实现
    def inorderTraversal(self, root):
    
            stack=[]
            sol=[]
            curr=root
            while curr or stack:
                      #if curr 不为None,则进行栈添加,然后获取其左节点(存储的都为左和中节点)
                    if curr:
                        stack.append(curr)
                        curr=curr.left        
                    else:
        #左节点为空,才开始进行下一步,则进行添加上一个节点的取值
                        curr=stack.pop()
                        sol.append(curr.val)
                        curr=curr.right
            return sol                    
     1 def preorderTraversal(self, root):
     2     if root==None:
     3         return []
     4     stack=[]
     5     sol=[]
     6     curr=root
     7     while curr or stack:
     8         if curr:
     9             sol.append(curr.val)
    10             stack.append(curr.right)
    11             curr=curr.left
    12 #如果当前节点的左节点为None,则返回上一个节点的右节点
    13         else:
    14             curr=stack.pop()
    15     return sol
    前序遍历
  • 相关阅读:
    :Netty中的Idle事件
    :Netty中的Idle事件
    大数据分析在石化企业的应用探讨
    全关联优化
    Java中的instanceof关键字
    Java中的instanceof关键字
    第七章 正则模式
    Rac sequence
    监控ping
    第六章 HASH
  • 原文地址:https://www.cnblogs.com/liuyicai/p/9786455.html
Copyright © 2011-2022 走看看