[LeetCode][Java] Populating Next Right Pointers in Each Node II
来源:互联网 发布:数据融合技术论文 编辑:程序博客网 时间:2024/06/05 16:31
题目:
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
题意:
伴随着问题《Populating Next Right Pointers in Each Node》
如果给定的这颗树是任意类型的树,你之前的解法是否依然可行呢?
注意:
你只能使用常数空间。
比如
给定如下的二叉树
1 / \ 2 3 / \ \ 4 5 7
调用你的函数之后,这颗二叉树应该是如下的样子: 1 -> NULL / \ 2 -> 3 -> NULL / \ \ 4-> 5 -> 7 -> NULL
算法分析:
* 整体思想与《Populating Next Right Pointers in Each Node》相同,同样是递归
* 但是在相邻节点为空的情况下,需要去寻找不为空的第一个节点,并与之相连
AC代码:
<span style="font-family:Microsoft YaHei;font-size:12px;">public class Solution { public void connect(TreeLinkNode root) { if (root == null) return; //如果右孩子不为空,左孩子的next是右孩子。 //反之,找root next的至少有一个孩子不为空的节点 if (root.left != null) { if (root.right != null) { root.left.next = root.right; } else { TreeLinkNode p = root.next; while (p != null && p.left == null && p.right == null) p = p.next; if (p != null) root.left.next = p.left == null ? p.right : p.left; } } //右孩子的next 根节点至少有一个孩子不为空的next if (root.right != null) { TreeLinkNode p = root.next; while (p != null && p.left == null && p.right == null) p = p.next; if (p != null) root.right.next = p.left == null ? p.right : p.left; } connect(root.right); connect(root.left); } }</span>
0 0
- [Leetcode] Populating Next Right Pointers in Each Node II (Java)
- [LeetCode][Java] Populating Next Right Pointers in Each Node II
- leetcode:Populating Next Right Pointers in Each Node II 【Java】
- 【LeetCode】Populating Next Right Pointers in Each Node Populating Next Right Pointers in Each Node II
- LeetCode Populating Next Right Pointers in Each Node II
- [Leetcode] Populating Next Right Pointers in Each Node II
- [LeetCode] Populating Next Right Pointers in Each Node II
- leetcode 79: Populating Next Right Pointers in Each Node II
- [Leetcode] Populating Next Right Pointers in Each Node ii
- leetcode Populating Next Right Pointers in Each Node II
- 【leetcode】Populating Next Right Pointers in Each Node II
- [Leetcode]Populating Next Right Pointers in Each Node II
- [leetcode] Populating Next Right Pointers in Each Node II
- LeetCode-Populating Next Right Pointers in Each Node II
- LeetCode - Populating Next Right Pointers in Each Node II
- [LeetCode]Populating Next Right Pointers in Each Node II
- leetcode Populating Next Right Pointers in Each Node II
- LeetCode | Populating Next Right Pointers in Each Node II
- 使用hostAdminApp快速修改host
- 新一代 Linux 文件系统 btrfs 简介
- 走进OC连载二
- C++ 自定义简单String类
- 3286 火柴排队 2013年NOIP全国联赛提高组
- [LeetCode][Java] Populating Next Right Pointers in Each Node II
- Android手机 Fildder真机抓包
- oc012---ARC
- Eclipse打JAR包,插件FatJar安装与使用
- 【亲测】常用国外.NET学习网站
- Docker implemented in 100 lines of bash
- leetcode: Search a 2D Matrix II
- java 反射的学习
- 换钱的方法数