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,
    
    
  • 相关阅读:
    Redis Cluster笔记
    http协议之 COOKIE
    lor框架代码分析
    PHP--SPL扩展学习笔记
    lua协程----ngx-lua线程学习笔记
    设计模式
    eclipse中使用maven创建springMVC项目
    一般处理程序里使用session对象
    .Dot NET Cored简介
    Spring 依赖注入(基本注入和自动适配注入)
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/9796280.html
Copyright © 2011-2022 走看看