• 【剑指Offer】8.二叉树的下一个结点


    题目

    给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示

    示例:

    输入:{8,6,10,5,7,9,11},8

    返回:9

    解析:这个组装传入的子树根节点,其实就是整颗树,中序遍历{5,6,7,8,9,10,11},根节点8的下一个节点就是9,应该返回{9,10,11},后台只打印子树的下一个节点,所以只会打印9,如下图,其实都有指向左右孩子的指针,还有指向父节点的指针,下图没有画出来

    数据范围:节点数满足 1≤n≤50  ,节点上的值满足 1≤val≤100 
    要求:空间复杂度 O(1)  ,时间复杂度 O(n) 

    输入描述:

    输入分为2段,第一段是整体的二叉树,第二段是给定二叉树节点的值,后台会将这2个参数组装为一个二叉树局部的子树传入到函数GetNext里面,用户得到的输入只有一个子树根节点

    返回值描述:

    返回传入的子树根节点的下一个节点,后台会打印输出这个节点

    示例1

    输入:{8,6,10,5,7,9,11},8

    返回值:9

    示例2

    输入:{8,6,10,5,7,9,11},6

    返回值:7

    示例3

    输入:{1,2,#,#,3,#,4},4

    返回值:1

    复制

    示例4

    输入:{5},5

    返回值:"null"

    说明:不存在,后台打印"null"

    解答

    源代码

    1. import java.util.*;
    2. /*
    3. public class TreeLinkNode {
    4. int val;
    5. TreeLinkNode left = null;
    6. TreeLinkNode right = null;
    7. TreeLinkNode next = null;
    8. TreeLinkNode(int val) {
    9. this.val = val;
    10. }
    11. }
    12. */
    13. public class Solution {
    14. public TreeLinkNode GetNext(TreeLinkNode pNode) {
    15. if (pNode.right != null) {
    16. pNode = pNode.right;
    17. while (pNode.left != null) {
    18. pNode = pNode.left;
    19. }
    20. return pNode;
    21. } else {
    22. while (pNode.next != null && pNode.next.left != pNode) {
    23. pNode = pNode.next;
    24. }
    25. if (pNode.next != null) {
    26. return pNode.next;
    27. } else {
    28. return null;
    29. }
    30. }
    31. }
    32. }

    总结

    直接寻找分为三种情况

    1.如果给出的结点有右子节点,则最终要返回的下一个结点即右子树的最左下的结点;

    2.如果给出的结点无右子节点,则先要沿着左上方父节点爬树,一直爬到当前结点是其父节点的左子节点为止,返回的就是这个父节点;没有满足上述情况的则返回为null。

  • 相关阅读:
    呼叫中心和电话营销系统相关知识--中继线路
    第L6周:机器学习-随机森林(RF)
    【spark】dataframe慎用limit
    Java之基本数据类型(3)
    IntelliJ IDEA快捷键大全 + 动图演示
    从编译器对指令集的要求看API设计原则
    HackQuest介绍 web3 学习平台
    60.【C++猜数字游戏(看一眼就会)】
    前端用 js-file-download组件下载后端返回的pdf,word,excel文件
    我的周刊(第053期)
  • 原文地址:https://blog.csdn.net/qq_57438473/article/details/133488016