互联网网站建设价格,厦门做网站最好的公司,优秀学习网站,厦门网站建设建站中心623. 在二叉树中增加一行中等给定一个二叉树的根 root 和两个整数 val 和 depth #xff0c;在给定的深度 depth 处添加一个值为 val 的节点行。注意#xff0c;根节点 root 位于深度 1 。加法规则如下:给定整数 depth#xff0c;对于深度为 depth - 1 的每个非空树节点 cur…623. 在二叉树中增加一行中等给定一个二叉树的根 root 和两个整数 val 和 depth 在给定的深度 depth 处添加一个值为 val 的节点行。注意根节点 root 位于深度 1 。加法规则如下:给定整数 depth对于深度为 depth - 1 的每个非空树节点 cur 创建两个值为 val 的树节点作为 cur 的左子树根和右子树根。cur 原来的左子树应该是新的左子树根的左子树。cur 原来的右子树应该是新的右子树根的右子树。如果 depth 1 意味着 depth - 1 根本没有深度那么创建一个树节点值 val 作为整个原始树的新根而原始树就是新根的左子树。 示例 1:输入: root [4,2,6,3,1,5], val 1, depth 2输出: [4,1,1,2,null,null,6,3,1,5]示例 2:输入: root [4,2,null,3,1], val 1, depth 3输出: [4,2,null,1,1,3,null,null,1]题解(层序遍历队列 求解)因为在深度为2是添加一行就是在第二行与第一行之间添加一行节点所以初始化一个变量为 1记录要添加一行位置与终止循环条件当添加的一行的左右节点为空时且深度正好为要添加一行深度则让该节点的左右节点都为要添加的节点当要添加的节点左或右不为空借助中间节点拼接树当深度为1时让要添加的节点左子树为根节点即可。/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val val;* this.left left;* this.right right;* }* }*/
class Solution {public TreeNode addOneRow(TreeNode root, int val, int depth) {QueueTreeNode queue new LinkedList();if(depth 1){TreeNode temp new TreeNode(val);temp.left root;System.out.println(temp.val temp.left.val);return temp;}// TreeNode temp new TreeNode(val);TreeNode dummy root;queue.add(dummy);int count 1;while (queue.size() 0){int n queue.size();for (int i 0; i n; i) {TreeNode remove queue.remove();if(remove.left ! null){// 左子树不为空if(count depth - 1){// 满足要添加节点深度TreeNode temp new TreeNode(val);TreeNode t remove.left;// 中间节点拼接remove.left temp;temp.left t;}else {// 不满足节点深度继续添加下一层节点queue.add(remove.left);}}else if(count depth - 1){// 左子树为空且满足添加节点深度直接让添加节点为该节点左子树TreeNode temp new TreeNode(val);remove.left temp;}if(remove.right ! null){// 右子树不为空if(count depth - 1){// 满足要添加节点深度TreeNode temp new TreeNode(val);TreeNode t remove.right;// 中间节点拼接remove.right temp;temp.right t;}else {// 不满足节点深度继续添加下一层节点queue.add(remove.right);}}else if(count depth - 1){// 左子树为空且满足添加节点深度直接让添加节点为该节点左子树TreeNode temp new TreeNode(val);remove.right temp;}}// if(count depth){// break;//}count;}return dummy;}
}