Populating Next Right Pointers in Each Node
Given a binary tree
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set toNULL
.
Initially, all next pointers are set toNULL
.
Note:
You may only use constant extra space.
Recursive approach is fine, implicit stack space does not count as extra space for this problem.
You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
Example:
Given the following perfect binary tree,
After calling your function, the tree should look like:
Analysis
Non-recursion
非递归的方法就是遍历Binary Tree,由于条件限制不能用额外空间extra space,因此level order BFS 所需的queue就不能用了。好在这一题中每层之间最终都会通过指针连接起来,也就让一行之内的遍历成为可能。
在上一层的节点连接起来之后就可以遍历该层,并且连接下一层的子节点。连接子节点分为两种情形:
该节点的左右子节点进行连接
该节点的右子节点和同层邻近下一个节点的左子节点相连接
层内移动指针:
转到下一层:
Recursion
递归的inexplicit的调用栈不在题目条件的限制内,因此也可以用递归。
递归函数的逻辑其实挺简单,就是把节点1连接到节点2
Solution
Use level start TreeLinkNode - O(1) space, O(n) time
Use recursion - (3ms 29.60%)
Last updated
Was this helpful?