您的位置:首页 > Web前端 > Node.js

一晚上 -- Populating Next Right Pointers in Each Node II

2015-06-14 14:50 633 查看
先使用分层cache做了一遍报内存超标。用这个办法又做了一遍。不过有一个问题始终搞不定原来关键在于后面要先做右边在做左边。因为你不准备好右边,左边没有东西指啊。。
https://leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/
/**

 * 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) {

        if (root == null) {

            return;

        }

        

        TreeLinkNode n = root.next;

        TreeLinkNode nextLevelN = null;

        while (n != null) {

            if (n.left == null && n.right == null) {

                n = n.next;

            } else {

                nextLevelN = (n.left == null ? n.right : n.left);

                break;

            }

        }

        

        if (root.left != null) {

            if (root.right != null) {

                root.left.next = root.right;

            } else {

                root.left.next = nextLevelN;

            }

        }

        

        if (root.right != null) {

            root.right.next = nextLevelN;

        }

        

        connect(root.right);

        connect(root.left);

   }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: