「思路」
因为是完美的二叉树所以问题的难度降低了不少。如果一个root有左右子节点则左next指向右。如果root有next节点,则root的右next指向root的next的左,否则指向NULL。
「运行结果」
其中version 2 仅仅是把两个函数合并成了一个函数,效率上提高了3ms。
- version1
class Solution {
public:
void connect(TreeLinkNode *root) {
if(!root)return;
rightlink(root);
}
void rightlink(TreeLinkNode *root)
{
if(root->left && root->right)
{
root->left->next=root->right;
if(root->next)
{
root->right->next=root->next->left;
}
else
{
root->next=NULL;
}
rightlink(root->left);
rightlink(root->right);
}
else return;
}
};
- version 2
class Solution {
public:
void connect(TreeLinkNode *root) {
if(!root)return;
if(root->left && root->right)
{
root->left->next=root->right;
if(root->next)
{
root->right->next=root->next->left;
}
else
{
root->next=NULL;
}
connect(root->left);
connect(root->right);
}
else return;
}