二叉树刷题记(九-二叉搜索树中的中序后继-中序遍历)

这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战

前言

  • 大家好,小嘟来啦,嘿嘿嘿,有没有想小嘟啊!,今天小嘟带来的还是我们的二叉树专题题目。
  • 读者可以往下翻一下,可以看到今天带来的题可是个中等哦!
  • 小嘟在这里猜一下,大家是不是刷题的时候一看到,中等、困难是不是就慌了(嘿嘿嘿),其实大家都一样,小嘟也是这样的。
  • 困难咱们可以先不尝试,中等的我们还可以试试,今天就和小嘟看看这道中等题的庐山真面目吧!

正文

初遇

  • 题目

image.png

  • 示例1

image.png

  • 示例2

image.png

了解

  • 看完这道题,小嘟就一个感受,这不就是又要我遍历二叉树,怎样遍历呢?小嘟我在看一遍题目,这不就是要中序遍历呗!然后遍历完,在来一个循环不就结束喽,读者请看代码。

熟悉

  • 代码
var inorderSuccessor = function(root, p) {
    let res = [];
    let stack = [];
    //中序遍历序列的构造过程
    while(root||stack.length){
        while(root){
            stack.push(root);
            root = root.left;
        }
        let target = stack.pop();
        res.push(target);
        root = target.right;
    }
    //在中序序列中和p.val相等的二叉树结点
    //然后进行如下的判断即可
    for(let i=0;i<res.length;i++){
        if(i == res.length-1) return null;
        if(res[i].val == p.val) return res[i+1];
    }
};
复制代码

image.png

知彼

  • 总结:做了这将近9道题目了,我们发现,什么操作都离不开遍历,所以我们得好好掌握遍历,小嘟将三种基本的遍历放到了底部,请读者自行学习。

结尾

  • 今天小嘟给大家留一个思考题,请看题:还是上边这个题的思想不变,这个时候我要求中序遍历的前一个结点`,,该怎么做呢?。
  • 若有问题,欢迎留言!!!,小嘟会尽自己最大的努力解决问题。

  • 小嘟今天有点课程有点多,所以更新的比较晚,不好意思啦!

  • 等到周末,小嘟会回过头来修改文章哒!
  • 希望读者看完能有所收获!

  • 谢谢读者点赞点赞点赞啦!

  • 小嘟溜啦溜啦...

附件

Guess you like

Origin juejin.im/post/7034532792176214029