116-Populating Next Right Pointers in Each Node
Description
Given a binary tree
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.
Initially, all next pointers are set to NULL.
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,
1
/ \
2 3
/ \ / \
4 5 6 7
After calling your function, the tree should look like:
1 -> NULL
/ \
2 -> 3 -> NULL
/ \ / \
4->5->6->7 -> NULL
問題描述
二叉樹中節點的結構如下
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}
將next指向右邊的節點。如果某節點無右邊節點, next置為null
問題分析
解法1
public class Solution {
public void connect(TreeLinkNode root) {
TreeLinkNode level_start = root;
while(level_start != null){
TreeLinkNode cur = level_start;
while(cur != null){
if(cur.left != null) cur.left.next = cur.right;
if(cur.right != null && cur.next != null) cur.right.next = cur.next.left;
cur = cur.next;
}
level_start = level_start.left;
}
}
}
解法2
public class Solution {
public void connect(TreeLinkNode root) {
if(root == null) return;
List<TreeLinkNode> res = new ArrayList<TreeLinkNode>();
connectFunc(root, res, 0);
}
public void connectFunc(TreeLinkNode root, List<TreeLinkNode> res, int height){
if(root == null) return;
if(height == res.size()) res.add(root);
else{
res.get(height).next = root;
res.set(height,root);
}
connectFunc(root.left, res, height + 1);
connectFunc(root.right, res, height + 1);
}
}
解法3
public class Solution {
public void connect(TreeLinkNode root) {
if(root == null) return;
if(root.left != null){
root.left.next = root.right;
if(root.next != null) root.right.next = root.next.left;
}
connect(root.left);
connect(root.right);
}
}
相關文章
- 117. Populating Next Right Pointers in Each Node II
- 117-Populating Next Right Pointers in Each Node II
- Leetcode 117. Populating Next Right Pointers in Each Node IILeetCode
- [LeetCode] 2516. Take K of Each Character From Left and RightLeetCode
- Function pointers and callbacksFunction
- C++ function pointersC++Function
- SCSS @eachCSS
- Node.js 工具庫 BlueBird 的一些例子:map,each 和 someNode.js
- Laravel each () 方法Laravel
- jQuery $.each用法jQuery
- Promise.each()Promise
- 如何選擇正確的Node框架:Next, Nuxt, Nest?框架UX
- for-each迴圈
- 【譯】 Types are moving to the right
- [譯] part 15: golang 指標pointersGolang指標
- rust-quiz:030-clone-pointers.rsRustUI
- sass的迴圈for,while,eachWhile
- $.each()、$.map()區別淺談
- border-right製作的
- Terraform中的for_each和countORM
- 199-Binary Tree Right Side ViewIDEView
- MySQL LEFT JOIN/ INNER JOIN/RIGHT JOINMySql
- 515-Find Largest Value in Each Tree Row
- [LeetCode] 2070. Most Beautiful Item for Each QueryLeetCode
- CSS @page:right列印偽類選擇器CSS
- [20230508]ORA-00907 missing right parenthesis.txt
- WPF live visual tree Right click,show properties,DataContextContext
- Sql 中的 left 函式、right 函式SQL函式
- eslint-disable-next-line to ignore the next lineEsLint
- jQuery中$.each()常見使用方法有哪些jQuery
- pointers.py: 為Python帶來地獄般的指標Python指標
- mysql常用連線查詢join,left,right,crossMySqlROS
- hexo Next 配置Hexo
- next-route
- next_permutation
- The connection to the server 10.10.0.2:6443 was refused - did you specify the right host or port?Server
- Next.js+React聊天室|Next仿微信桌面端|next.js聊天例項JSReact
- jQuery的each終止或跳過示例程式碼jQuery