• 树的非递归遍历


    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,
    
    
  • 相关阅读:
    Ubuntu下配置Viw Tab键缩进格数
    Windows文件传给Ubuntu出现乱码问题
    [Luogu] P4948 数列求和
    [Luogu]P1286 两数之和
    [Luogu]P2717 寒假作业
    [Luogu]P5110 块速递推
    Breeze魔兽编程交流论坛
    #pragma 预处理指令详解
    Api Hook 细析(一)
    CMS(网站内容管理系统)有哪些?
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/9796280.html
Copyright © 2020-2023  润新知