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
Solution 1:
递归版本。
public void connect(TreeLinkNode root) { if(root == null) return; TreeLinkNode p = root.next; while(p!=null) { if(p.left != null) { p = p.left; break; } if(p.right != null) { p = p.right; break; } p = p.next; } if(root.right != null) { root.right.next = p; p = root.right; } if(root.left != null) { root.left.next = p; } connect(root.right); connect(root.left); }
Solution 2:
非递归版本。
public void connect(TreeLinkNode root) { if(root == null) return; TreeLinkNode lastHead = root; TreeLinkNode curHead = null, curPrev = null; while(lastHead!=null) { while(lastHead != null) { if(lastHead.left!=null) { if(curHead == null) { curHead = lastHead.left; curPrev = curHead; } else { curPrev.next = lastHead.left; curPrev = curPrev.next; } } if(lastHead.right!=null) { if(curHead == null) { curHead = lastHead.right; curPrev = curHead; } else { curPrev.next = lastHead.right; curPrev = curPrev.next; } } lastHead = lastHead.next; } lastHead = curHead; curHead = null; } }
相关推荐
java基础 java_leetcode题解之Populating Next Right Pointers in Each Node
java java_leetcode题解之Populating Next Right Pointers in Each Node.java
javascript js_leetcode题解之116-populating-next-right-pointers-in-each-node.js
python python_leetcode题解116_Populating_Next_Right_Pointers_in_Each_Node
leetcode卡 leetcode_python 项目介绍 想学学python,刷刷leetcode 打卡轨迹 2020-01-13 70 爬楼梯 2020-01-14 120 Triangle 2020-01-15 213 House Robberll -变种 198 337 2020-01-16 139 单词拆分 2020-01-20 104 ...
四平方和定理 leetcode Leetcode practice Table of content Tree 92.reverse-linked-list-ii (反转链表 II) 94.binary-tree-in...116.populating-next-right-pointers-in-each-node (填充每个节点的下一个右侧节点
leetcode题库 pyshua Python 算法题练习 用法: python Judge.py library problem 例子: python Judge.py leetcode TwoSum 如何贡献: 收录题库 LeetCode (还有4题未录入, 分别为 LRU Cache, Copy List with Random ...
[117]填充每个节点的下一个右侧节点指针 II|populating-next-right-pointers-in-each-node-ii给定一个二叉树填充
lru cache leetcode leetcode 记录自己刷leetcode时遇到的一些值得记下来的题目, 分为一些子项 bytedance ...populating-next-right-pointers-in-each-node sum-root-to-leaf-numbers best-time-to-buy
蓄水池算法 leetcode leetcode Post: 《双指针的魅力》 《常见面试题思想方法整理》 ...populating-next-right-pointers-in-each-node-ii: 二级指针代码虽然简洁优雅,但是对性能有影响,不如一级指针加if else判断快。
- **Populating Next Right Pointers in Each Node**:连接二叉树每个节点的下一个右侧节点。 - **Convert Sorted List/Array to Binary Search Tree**:将有序列表或数组转换为二叉搜索树。 - **Path Sum II**:...
力扣第七题通常是指“重建二叉树”(重建二叉树的英文原题可能是“Populating Next Right Pointers in Each Node”)。这是一道中等难度的题目,主要考察的是树结构和深度优先搜索(DFS)或广度优先搜索(BFS)的...