zoukankan      html  css  js  c++  java
  • 67. 二叉树的中序遍历

    67. 二叉树的中序遍历

    中文English

    给出一棵二叉树,返回其中序遍历

    样例

    样例 1:

    输入:{1,2,3}
    输出:[2,1,3]
    解释:
       1
      / 
     2   3
    它将被序列化为{1,2,3}
    中序遍历
    

    样例 2:

    输入:{1,#,2,3}
    输出:[1,3,2]
    解释:
    1
     
      2
     /
    3
    它将被序列化为{1,#,2,3}
    中序遍历
    

    挑战

    你能使用非递归算法来实现么?

     
    输入测试数据 (每行一个参数)如何理解测试数据?

     非递归写法

    """
    Definition of TreeNode:
    class TreeNode:
        def __init__(self, val):
            self.val = val
            self.left, self.right = None, None
    """
    
    class Solution:
        """
        @param root: A Tree
        @return: Inorder in ArrayList which contains node values.
        """
        def inorderTraversal(self, root):
            # write your code here
            #先一路向左,压栈,然后依次访问,存在左节点,则继续向左
            stack = []
            output = []
            
            while stack or root:
                #先压栈
                while root:
                    stack.append(root)
                    root = root.left
                    
                #然后依次访问,pop掉最后一个left节点
                root = stack.pop()
         
                output.append(root.val)
                root = root.right
            
            
            return output
  • 相关阅读:
    JVM结构
    redis缓存淘汰策略
    idea常用快捷键
    Spring常用注解
    redis持久化
    crontab定时调度
    redis五种数据类型
    LVM实验报告
    fdisk以及parted分区实验
    fdisk与parted的区别以及parted为何可分128个区
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13509381.html
Copyright © 2011-2022 走看看