标签:结点 offer next TreeLinkNode pNode 二叉树 NULL 节点
题目链接:二叉树的下一个结点
题意:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
题解:中序遍历查找下一个节点。也是数据结构里的常见题。
当前节点如果有右子树,下一个节点是右子树最左节点。
当前节点如果没有右子树,下一个节点是它的祖先节点。即找以它父亲节点为左孩子的节点。
代码:
1 /* 2 struct TreeLinkNode { 3 int val; 4 struct TreeLinkNode *left; 5 struct TreeLinkNode *right; 6 struct TreeLinkNode *next; 7 TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) { 8 9 } 10 }; 11 */ 12 class Solution { 13 public: 14 TreeLinkNode* GetNext(TreeLinkNode* pNode) 15 { 16 if(pNode == NULL) return NULL; 17 //有右子树,右子树最左节点 18 if(pNode->right != NULL){ 19 pNode=pNode->right; 20 while(pNode->left!=NULL) pNode = pNode->left; 21 return pNode; 22 } 23 //当前节点为父亲节点的左孩子的父亲节点 24 while(pNode->next!=NULL){ 25 if(pNode->next->left == pNode) return pNode->next; 26 pNode = pNode->next; 27 } 28 return NULL; 29 } 30 };
标签:结点,offer,next,TreeLinkNode,pNode,二叉树,NULL,节点 来源: https://www.cnblogs.com/Asumi/p/12423505.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。