博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树的下一个结点
阅读量:4607 次
发布时间:2019-06-09

本文共 1487 字,大约阅读时间需要 4 分钟。

题目描述

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
 
分析二叉树的下一个节点,一共有以下情况:
1.二叉树为空,则返回空;
2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找到的叶子节点即为下一个节点;
3.节点不是根节点。如果该节点是其父节点的左孩子,则返回父节点;否则继续向上遍历其父节点的父节点,重复之前的判断,返回结果。代码如下:
/*struct TreeLinkNode {    int val;    struct TreeLinkNode *left;    struct TreeLinkNode *right;    struct TreeLinkNode *next;    TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) {            }};*/class Solution {public:    TreeLinkNode* GetNext(TreeLinkNode* pNode)    {        if(pNode==NULL)	return NULL;        if(pNode->right!=NULL) {            pNode=pNode->right;            while(pNode->left!=NULL)                pNode=pNode->left;            return pNode;        }                while(pNode->next!=NULL) {            TreeLinkNode *proot=pNode->next;            if(proot->left==pNode)                return proot;            pNode=pNode->next;        }        return NULL;    }};

  

public class Solution {    TreeLinkNode GetNext(TreeLinkNode node)    {        if(node==null) return null;        if(node.right!=null){    //如果有右子树,则找右子树的最左节点            node = node.right;            while(node.left!=null) node = node.left;            return node;        }        while(node.next!=null){ //没右子树,则找第一个当前节点是父节点左孩子的节点            if(node.next.left==node) return node.next;            node = node.next;        }        return null;   //退到了根节点仍没找到,则返回null    }}

  

 

上述代码可能不太清楚,可以查阅下一篇博客

转载于:https://www.cnblogs.com/dd2hm/p/7459049.html

你可能感兴趣的文章
Python 和其他编程语言数据类型的比较
查看>>
T2695 桶哥的问题——送桶 题解
查看>>
HTML5 表单
查看>>
Android群英传》读书笔记 (3) 第六章 Android绘图机制与处理技巧 + 第七章 Android动画机制与使用技巧...
查看>>
关于微信公众平台测试号配置失败的问题
查看>>
【NOIP2001】统计单词个数
查看>>
linux常用端口
查看>>
异常处理
查看>>
/proc/uptime详解
查看>>
如何建立合适的索引?
查看>>
acwing 651. 逛画展
查看>>
(待完成)qbxt2019.05 总结12 - 趣味题目 鹰蛋
查看>>
[2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
查看>>
关于WPF程序只运行一个实例的方法
查看>>
图论:点分治
查看>>
mysql
查看>>
C/C++ 知识点---sizeof使用规则及陷阱分析(网摘)
查看>>
java小程序 示例
查看>>
前端开发在线小工具
查看>>
有关cookies使用方法
查看>>