117. Populating Next Right Pointers in Each Node II

    xiaoxiao2021-04-16  28

    Follow up for problem "Populating Next Right Pointers in Each Node".

    What if the given tree could be any binary tree? Would your previous solution still work?

    Note:

    You may only use constant extra space.

    For example, Given the following binary tree,

    1 / \ 2 3 / \ \ 4 5 7

    After calling your function, the tree should look like:

    1 -> NULL / \ 2 -> 3 -> NULL / \ \ 4-> 5 -> 7 -> NULL

    Subscribe to see which companies asked this question.

    Solution:

    Tips:

    recursion in from left to right, up to down.

    Java Code:

    /** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { val = x; } * } */ public class Solution { public void connect(TreeLinkNode root) { treeRecursion(root); } void listRecursion(TreeLinkNode root, TreeLinkNode[] lastNode){ if(null == root) { return; } listRecursion(root.next, lastNode); if(root.right != null){ root.right.next = lastNode[0]; lastNode[0] = root.right; } if(root.left != null){ root.left.next = lastNode[0]; lastNode[0] = root.left; } } void treeRecursion(TreeLinkNode root){ if(null == root) { return; } TreeLinkNode[] lastNode = {null}; listRecursion(root, lastNode); treeRecursion(lastNode[0]); } }

    转载请注明原文地址: https://ju.6miu.com/read-672578.html

    最新回复(0)