LeetCode Add One Row to Tree
来源:互联网 发布:9月中国m2数据 编辑:程序博客网 时间:2024/05/29 09:05
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 = 1d = 2Output: 4 / \ 1 1 / \ 2 6 / \ / 3 1 5
Example 2:
Input: A binary tree as following: 4 / 2 / \ 3 1 v = 1d = 3Output: 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.
public class addOneRow{ public TreeNode addOneRow(TreeNode root,int v,int d) { if(d == 1) { TreeNode newroot = new TreeNode(v); newroot.left =root; return newroot; } Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); for(int i = 0; i < d - 2; i++) //用for循环来层次遍历,得到所要添加的深度的上一层的所有节点,并将结果保存在一个queue队列里 { int size = queue.size(); for(int j = 0; j < size; j++) { TreeNode t = queue.poll(); if(t.left != null) queue.add(t.left); if(t.right != null) queue.add(t.right); } } while(!queue.isEmpty()) //对保存有需要添加深度的上一层所有节点的队列,我们依次对每一个节点添加新的节点,并将每一个节点原来的左右子树赋给新添加节点的左右子树 { TreeNode t = queue.poll(); TreeNode newparent1 = new TreeNode(v); TreeNode tmp = t.left; t.left = newparent1; newparent1.left = tmp; TreeNode newparent2 = new TreeNode(v); tmp = t.right; t.right = newparent2; newparent2.right = tmp; } return root; }}
- leetcode-623. Add One Row to Tree
- leetcode 623 Add One Row to Tree
- leetcode 623. Add One Row to Tree
- Leetcode 623. Add One Row to Tree
- [LeetCode] 623. Add One Row to Tree
- [LeetCode] Add One Row to Tree
- leetcode 623. Add One Row to Tree
- LeetCode Add One Row to Tree
- Add One Row to Tree
- 【LeetCode】623.Add One Row to Tree(Medium)解题报告
- 623. Add One Row to Tree
- 623. Add One Row to Tree
- 623. Add One Row to Tree
- 623. Add One Row to Tree
- 623. Add One Row to Tree
- leetcode 623. Add One Row to Tree 深度优先遍历DFS + 很棒的递归
- 623. Add One Row to Tree(Difficulty: Medium)
- Add One Row to Tree问题及解法
- 算法题练习系列之(二十八): 插入与归并
- bindingflags
- 构造/析构/赋值运算符
- Android----什么是ANR?
- 学习笔记-非监督学习
- LeetCode Add One Row to Tree
- MFC (opencv配置) 应用程序无法正常启动(0xc000007b)请单击“确定"关闭应用程序 的解决方法
- 《小米手机报错“Installation failed with message Failed to establish session”》
- django.core.exceptions.FieldError: Local field 'id' in class 'User' clashes with field of similar na
- RMQ入门
- linux 串口接收不到0x11, 0x0d, 0x13
- Java三大器之拦截器(Interceptor)的实现原理及代码示例
- 安装的wampserver,如何从localhost中进入自己的项目的解决方法
- 设计模式学习笔记---1.设计模式六大原则