题目原文:
Given a binary tree
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.
For example,
Given the following perfect binary tree,
1
/ \
2 3
/ \ / \
4 5 6 7
After calling your function, the tree should look like:
1 -> NULL
/ \
2 -> 3 -> NULL
/ \ / \
4->5->6->7 -> NULL
题目大意:
给一个二叉树加一个Next指针,指向右邻节点。
题目分析:
对每个根节点,其左孩子的next是右孩子,右孩子的next是next的左孩子。再递归对左子树和右子树调用这个函数,注意一些边界情况(叶子节点,空节点等)即可。
源码:(language:java)
public class Solution {
public void connect(TreeLinkNode root) {
if(root==null)
return;
else if(root.left == null && root.right == null && root.next == null) { // root is a leaf node
root.next=null;
return;
}
else {
if(root.left != null)
root.left.next = root.right;
if(root.right != null && root.next != null)
root.right.next = root.next.left;
if(root.right != null && root.next == null)
root.right.next = null;
connect(root.left);
connect(root.right);
}
}
}
成绩:
0ms,beats 81.60%,众数1ms,52.14%