• 刷题-力扣-623. 在二叉树中增加一行


    623. 在二叉树中增加一行

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/add-one-row-to-tree
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目描述

    给定一个二叉树,根节点为第1层,深度为 1。在其第 d 层追加一行值为 v 的节点。

    添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N,为 N 创建两个值为 v 的左子树和右子树。

    将 N 原先的左子树,连接为新节点 v 的左子树;将 N 原先的右子树,连接为新节点 v 的右子树。

    如果 d 的值为 1,深度 d - 1 不存在,则创建一个新的根节点 v,原先的整棵树将作为 v 的左子树。

    示例 1:

    输入: 
    二叉树如下所示:
           4
         /   
        2     6
       /    / 
      3   1 5   
    
    v = 1
    
    d = 2
    
    输出: 
           4
          / 
         1   1
        /     
       2       6
      /      / 
     3   1   5   
    

    示例 2:

    输入: 
    二叉树如下所示:
          4
         /   
        2    
       /    
      3   1    
    
    v = 1
    
    d = 3
    
    输出: 
          4
         /   
        2
       /     
      1   1
     /       
    3       1
    

    注意:

    • 输入的深度值 d 的范围是:[1,二叉树最大深度 + 1]。
    • 输入的二叉树至少有一个节点。

    题目分析

    1. 根据题目描述,在二叉树中添加一层节点
    2. 深度优先搜索遍历,在二叉树指定的层中添加节点,并将原节点的左子树设为新左节点的左子树,原节点的右子树设为新右节点的右子树

    代码

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
     *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
     * };
     */
    class Solution {
    public:
        TreeNode* addOneRow(TreeNode* root, int val, int depth) {
            if (!root) return nullptr;
            if (depth == 1) {
                return new TreeNode(val, root, nullptr);
            } else if (depth == 2) {
                TreeNode* left = root->left;
                TreeNode* right = root->right;
                root->left = new TreeNode(val, left, nullptr);
                root->right = new TreeNode(val, nullptr, right);
                return root;
            } else {
                root->left = addOneRow(root->left, val, depth - 1);
                root->right = addOneRow(root->right, val, depth - 1);
                return root;
            }
        }
    };
    
  • 相关阅读:
    HHUOJ 1321
    数据结构应用
    数据结构应用
    数据结构与算法分析
    数据结构与算法分析
    CSS -- 字体样式
    CSS -- 选择器
    CSS
    HTML -- 表单元素2
    HTML -- 表单元素1
  • 原文地址:https://www.cnblogs.com/HanYG/p/15226487.html
Copyright © 2020-2023  润新知