题解 | #二叉树的下一个结点#
二叉树的下一个结点
http://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e
第二十二题 不是很懂
第一种 暴力破解 遍历完next 回到根节点 再中序遍历 补充完所有的next 返回结果
/*
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:
vector<TreeLinkNode*> node;
TreeLinkNode* GetNext(TreeLinkNode* pNode) {
// 怎么给的参数啊 这题目出的。。。看都看不懂
// 那个8、9是什么啊
// 好像是要求中序遍历 填充next next的值是指向下一个中序遍历的结点??
// 标准答案 有 先遍历所有的next??好像是为了走到根节点????
TreeLinkNode* temp=pNode;
while(pNode->next!=NULL)
pNode=pNode->next;
// 正常中序遍历
zhongxvbianli(pNode);
for(int i=0;i<node.size();i++)
node[i]->next=node[i+1];
return temp->next;
}
void zhongxvbianli(TreeLinkNode* pNode)
{
if(pNode == NULL)
return;
zhongxvbianli(pNode->left);
// cout<<pNode->val<<endl;
node.push_back(pNode);
zhongxvbianli(pNode->right);
}
};
题解 文章被收录于专栏
一遍做剑指offer 一边保存做题步骤 并附带详细注释哦