623-Add One Row to Tree
Description
Given the root of a binary tree, then value v and depth d, you need to add a row of nodes with value v at the given depth d. The root node is at depth 1.
The adding rule is: given a positive integer depth d, for each NOT null tree nodes N in depth d-1, create two tree nodes with value v as N’s left subtree root and right subtree root. And N’s original left subtree should be the left subtree of the new left subtree root, its original right subtree should be the right subtree of the new right subtree root. If depth d is 1 that means there is no depth d-1 at all, then create a tree node with value v as the new root of the whole original tree, and the original tree is the new root’s left subtree.
Example 1:
Input:
A binary tree as following:
4
/ \
2 6
/ \ /
3 1 5
v = 1
d = 2
Output:
4
/ \
1 1
/ \
2 6
/ \ /
3 1 5
Example 2:
Input:
A binary tree as following:
4
/
2
/ \
3 1
v = 1
d = 3
Output:
4
/
2
/ \
1 1
/ \
3 1
Note:
- The given d is in range [1, maximum depth of the given tree + 1].
- The given binary tree has at least one tree node.
問題描述
給定二叉樹的根節點, v和d, 你需要在高度為d的一行插入值為v的節點。根節點的高度為1
插入規則為:對於高度為d - 1的每個非空節點N,建立兩個節點, 分別作為N的左子樹的根節點以及右子樹的根節點。 N原來的左子樹的根節點為新的左子樹根節點的左孩子, N原來的右子樹的根節點為新的右子樹根節點的右孩子。如果d為1, 那麼新建一個根節點, 將原來的根節點作為新建根節點的左孩子。
問題分析
遞迴的過程中注意傳遞父節點, 然後注意高度, 當高度為1時插入新的根節點即可
解法
class Solution {
public TreeNode addOneRow(TreeNode root, int v, int d) {
if(d == 1){
TreeNode row = new TreeNode(v);
row.left = root;
return row;
}
addOneRow(root, v, d, null);
return root;
}
private void addOneRow(TreeNode root, int v, int d, TreeNode parent) {
if(d == 1){
if(parent != null){
if(parent.left == root){
parent.left = new TreeNode(v);
parent.left.left = root;
}else{
parent.right = new TreeNode(v);
parent.right.right = root;
}
}
return;
}
if(root == null) return;
addOneRow(root.left, v, d - 1, root);
addOneRow(root.right, v, d - 1, root);
}
}
相關文章
- MySQL Binlogging Fails With Writing One Row To The Row-based Binary Log FailedMySqlAI
- 515-Find Largest Value in Each Tree Row
- MySQL裡的found_row()與row_count()MySql
- ORACLE ROW MOVEMENTOracle
- A. Arrow a Row
- tomcat one connection one thread one request one threadTomcatthread
- #1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs
- enq: TX - row lock contentionENQ
- tree
- flutter佈局-2-rowFlutter
- Flutter 之 Row、Column詳解Flutter
- Oracle vs PostgreSQL Develop(19) - PIPE ROWOracleSQLdev
- 等待事件enq: TX - row lock contention事件ENQ
- PostgreSQL DBA(102) - pgAdmin(Row Level Security)SQL
- InnoDB從內分析之Row(一)
- Flutter之Row/Column用法詳解Flutter
- Oracle中rownum和row_number()Oracle
- MySQL8.0 binlog_row_metadataMySql
- Flutter基礎元件Row&ColumnFlutter元件
- Decision Tree
- Tree Compass
- A - Distance in Tree
- DSU on Tree
- Rebuild TreeRebuild
- 01 Tree
- one drive
- 【MySQL(1)| B-tree和B+tree】MySql
- 多路查詢樹:B-tree/b+tree
- LeetCode#110.Balanced Binary Tree(Tree/Height/DFS/Recursion)LeetCode
- Flutter 佈局(七)- Row、Column詳解Flutter
- 奇異的enq: TX - row lock contentionENQ
- Flutter線性佈局Row和ColumnFlutter
- Hive ROW_NUMBER,RANK(),DENSE_RANK()Hive
- Flutter控制元件--Row、Column和StackFlutter控制元件
- 關於hibernate的 No row with the given identifier existsIDE
- sql中row_number over語句SQL
- One-on-One Oracle閱讀筆記2(轉)Oracle筆記
- Root of AVL Tree