zoukankan      html  css  js  c++  java
  • 树的非递归遍历

    def pre_order_stack(self,root):         #堆栈实现前序遍历(非递归)
            if not root:
                return
            myStack = []
            node = root
            while myStack or node:
                while node:       #从根节点开始,一直寻找他的左子树
                    print node.data,
                    myStack.append(node)
                    node = node.left
                node = myStack.pop()    #while结束表示当前节点node为空,即前一个节点没有左子树了
                node = node.right       #开始查看它的右子树
    
    
    
    
    def in_order_stack(self,root):        #堆栈实现中序遍历(非递归)
            if not root:
                return
            myStack = []
            node = root
            while myStack or node:     #从根节点开始,一直寻找它的左子树
                while node:
                    myStack.append(node)
                    node = node.left
                node = myStack.pop()
                print node.data,
                node = node.right
    
    
    def post_order_stack(self, root):  # 堆栈实现后序遍历(非递归)
            # 先遍历根节点,再遍历右子树,最后是左子树,这样就可以转化为和先序遍历一个类型了,最后只把遍历结果逆序输出就OK了。
            if not root:
                return
            myStack1 = []
            myStack2 = []
            node = root
            while myStack1 or node:
                while node:
                    myStack2.append(node)
                    myStack1.append(node)
                    node = node.right
                node = myStack1.pop()
                node = node.left
            while myStack2:
                print myStack2.pop().data,
    
    
  • 相关阅读:
    UML描述
    Tomcat优化
    Tomcat源码
    Tomcat架构
    搭建K8s集群[无需科学shangwang]
    minikube安装
    K8S核心组件和架构图
    Docker数据持久化
    Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式
    cookie与session区别?
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/9796280.html
Copyright © 2011-2022 走看看