623. 在二叉树中增加一行

导读:本篇文章讲解 623. 在二叉树中增加一行,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

623. 在二叉树中增加一行icon-default.png?t=M85Bhttps://leetcode.cn/problems/add-one-row-to-tree/

难度中等190

给定一个二叉树的根 root 和两个整数 val 和 depth ,在给定的深度 depth 处添加一个值为 val 的节点行。

注意,根节点 root 位于深度 1 。

加法规则如下:

  • 给定整数 depth,对于深度为 depth - 1 的每个非空树节点 cur ,创建两个值为 val 的树节点作为 cur 的左子树根和右子树根。
  • cur 原来的左子树应该是新的左子树根的左子树。
  • cur 原来的右子树应该是新的右子树根的右子树。
  • 如果 depth == 1 意味着 depth - 1 根本没有深度,那么创建一个树节点,值 val 作为整个原始树的新根,而原始树就是新根的左子树。

示例 1:

623. 在二叉树中增加一行

输入: root = [4,2,6,3,1,5], val = 1, depth = 2
输出: [4,1,1,2,null,null,6,3,1,5]

示例 2:

623. 在二叉树中增加一行

输入: root = [4,2,null,3,1], val = 1, depth = 3
输出:  [4,2,null,1,1,3,null,null,1]

提示:

  • 节点数在 [1, 104] 范围内
  • 树的深度在 [1, 104]范围内
  • -100 <= Node.val <= 100
  • -105 <= val <= 105
  • 1 <= depth <= the depth of tree + 1

通过次数41,883提交次数69,358

/**
 * 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) {
        if(depth==1)
        {
            TreeNode a = new TreeNode(val);
            a.left = root;
            return a;
        }
        dfs(root,val,depth,1,1);
        return root;
    }
    void dfs(TreeNode node, int val, int depth,int len,int flag)
    {
        if(node==null) return;
        if(depth-1==len)
        {
            TreeNode a = new TreeNode(val);
            TreeNode b = new TreeNode(val);
            a.left = node.left;
            node.left = a;
            b.right = node.right;
            node.right = b;
            return;
        }
        else 
        {
            dfs(node.left,val,depth,len+1,1);
            dfs(node.right,val,depth,len+1,2);
        }

    }
}

623. 在二叉树中增加一行

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68938.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!