P94

作者: 宙斯是只猫 | 来源:发表于2020-02-04 01:01 被阅读0次

给定一个二叉树,返回它的中序 遍历。

示例:

输入: [1,null,2,3]
1
\
2
/
3

输出: [1,3,2]

中序遍历的话比较简单,代码如下:

 public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        inorderTraversal(root,list);
        return list;
    }

    private void inorderTraversal(TreeNode node, List<Integer> list) {
        if (node != null){
            inorderTraversal(node.left,list);
            list.add(node.val);
            inorderTraversal(node.right,list);
        }
    }

题目建议用迭代的方式来处理,其实就是模拟递归中序遍历的过程,这里就需要讲下中序遍历的过程:

假如说,现在有这样的一颗二叉树:


      5      
    /   \    
   3    6    
  / \    \   
 2  4     8  

它的中序遍历过程是怎么样的呢,首先每个节点在遍历的过程中会访问三次,如果在第一次访问输出就是前序,如果第二次访问则是中序,如果第三次访问则是后续.中序访问如下,第一次访问5,不输出,接着访问3,不输出,访问2,2第一次访问不输出,判断左子节点为null,此时返回到2这个节点,此时输出2,访问完2后,返回到3,此时输出3,接着访问4,第一次不输出,第二次输出4,在接着返回到3,然后返回到5,访问5,接着访问6.....整个过程大概是这样子5->3->2->2->2->3->4->4->4->3->5->6->6->8->8->8->6->5,所以模拟的过程如下:

  public List<Integer>  inorderTraversalNR(TreeNode root){
        List<Integer> list = new ArrayList<>();
        Stack<TreeNode> stack = new Stack<>();
        stack.add(root);
        TreeNode cur = root;
        while (!stack.isEmpty()&&cur!=null){
        //首先把root的左子节点全部入栈
            while (cur.left != null){
                cur = cur.left;
                stack.add(cur);
            }
            //弹出左左边的元素
            TreeNode pop = stack.pop();
            list.add(pop.val);
            //如果右子节点不为空,此时入栈
            if (pop.right != null){
                cur = pop.right;
                stack.add(cur);
            }
        }
        return list;
    }

相关文章

  • P94

  • P94

    给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]1\2/3输出: [1,3,2] 中序遍...

  • 《自控力》P94

    作者:凯利•麦格尼格尔 金句:即便你没有把意志力挑战当做衡量道德的标准,你也有可能陷入“道德许可”的陷阱。这是因为...

  • 《自控力》P94

    作者:凯利•麦格尼格尔 金句:不要把支持目标实现的行为误认为是目标本身。不是说你做了一件和你目标一致的事情,你就不...

  • 《妈妈知道怎么办》读书笔记Day5

    书籍:《妈妈知道怎么办》 读者:Mocy 日期:2020.12.6 页码:P94—P104 收获: 一、A...

  • Day 02|Marilyn was pregnant

    Chapter2/ p94/audio1:55:17 P1 精析 句1 America was a melting...

  • P94 不好兑现的承诺

    20180516周三 瓢泼大雨 这两天中午,孩子有些兴奋,总是不睡午觉,今天中午都1点半了还是像煎鱼一样翻来...

  • 孩子的错误目标(四)

    018.06.24 阅读者:life.笨女人 阅读书名: 孩子:挑战 阅读页数:P81- P94(P445) 阅读...

  • 记·自律『第370天』

    1、《掌控习惯》(p94~95) 2、云听:《诡案追踪》(第33~38集) 3、声音天天练打卡(5.21) 4、形...

  • 把时间当做朋友p94~98

    穷则独善其身,富则达泽天下。每天每时每刻往自己人生幸福的方向添加砝码。让自己成为一个有价值的人。老话说了“富在深山...

网友评论

      本文标题:P94

      本文链接:https://www.haomeiwen.com/subject/fmulxhtx.html