623.在二叉树中增加一行(代码片段)

Debroon Debroon     2023-01-30     544

关键词:

623. 在二叉树中增加一行

 


题目

传送门:https://leetcode.cn/problems/add-one-row-to-tree/

 


算法设计:深度优先搜索

遍历到对应行,进行插入即可。

class Solution 
    int targetVal, targetDepth, curDepth;
public:
    TreeNode* addOneRow(TreeNode* root, int v, int d) 
        targetVal = v;
        targetDepth = d;
        // 插入到第一行的话特殊对待一下
        if (targetDepth == 1) 
            TreeNode* newRoot = new TreeNode(targetVal);
            newRoot->left = root;
            return newRoot;
        
        // 遍历二叉树,走到对应行进行插入
        traverse(root);
        return root;
    

    void traverse(TreeNode* root) 
        if (root == nullptr) 
            return;
        // 前序位置
        curDepth++;
        if (curDepth == targetDepth - 1) 
            // 进行插入
            TreeNode* newLeft = new TreeNode(targetVal);
            TreeNode* newRight = new TreeNode(targetVal);
            newLeft->left = root->left;
            newRight->right = root->right;
            root->left = newLeft;
            root->right = newRight;
        

        traverse(root->left);
        traverse(root->right);

        // 后序位置
        curDepth--;
    
;

简化一下:

class Solution 
public:
    TreeNode* addOneRow(TreeNode* root, int v, int d) 
        if (d == 0 || d == 1)     // 插入到第0、1行时,特别处理
            TreeNode* newroot = new TreeNode(v);
            (d ? newroot->left : newroot->right) = root;
            return newroot;
        
        if (root) 
            root->left  = addOneRow(root->left,  v, d > 2 ? d - 1 : 1);
            root->right = addOneRow(root->right, v, d > 2 ? d - 1 : 0);
        
        return root;
    
;

623.在二叉树中增加一行(代码片段)

623.在二叉树中增加一行题目算法设计:深度优先搜索 题目传送门:https://leetcode.cn/problems/add-one-row-to-tree/ 算法设计:深度优先搜索遍历到对应行,进行插入即可。classSolutioninttargetVal,targetDepth,curDepth;public:TreeNode*a... 查看详情

leetcode623在二叉树中增加一行[bfsdfs]heroding的leetcode之路(代码片段)

解题思路:首先是BFS的思路,将root放入队列中,逐层遍历,当下一层就是目标层时,取出当前层的所有元素,并加上新的左右节点,同时与下一层相连,代码如下:/***Definitionforabinarytreenode.*stru... 查看详情

leetcode0623.在二叉树中增加一行:dfs/bfs(代码片段)

【LetMeFly】623.在二叉树中增加一行:DFS/BFS力扣题目链接:https://leetcode.cn/problems/add-one-row-to-tree/给定一个二叉树的根 root 和两个整数val和 depth ,在给定的深度 depth 处添加一个值为val的节点行。注意,根节点 r... 查看详情

javaiterativelpreorder在二叉树中遍历(代码片段)

查看详情

在二叉树中找到两个节点的最近公共祖先(代码片段)

在二叉树中找到两个节点的最近公共祖先描述给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值o1和o2,请找到o1和o2的最近公共祖先节点。注:本题保证二叉树中每个节点的val值均不相同。示例1输入:[3,5... 查看详情

在二叉树中找到一个节点的后继节点(代码片段)

题目思路题目来源C++代码实现/*structTreeLinkNodeintval;structTreeLinkNode*left;structTreeLinkNode*right;structTreeLinkNode*next;TreeLinkNode(intx):val(x),left(NULL),right(NULL),next(NULL);*/classSolutionpubli 查看详情

c_cpp在二叉树中打印给定节点的表兄弟(代码片段)

查看详情

在二叉树中插入元素

】在二叉树中插入元素【英文标题】:InsertinganelementinBinaryTree【发布时间】:2013-04-3005:30:19【问题描述】:尝试在网上进行了很多探索,但可以得到任何帮助,到处都像是在二叉搜索树中添加一个节点。问题:请求向二叉树添加... 查看详情

如果不是树中的所有这些节点,python会在二叉树中找到两个节点的最低共同祖先(代码片段)

我理解如何解决这两个节点必须在二叉树中的问题,但是如果它们不必在树中呢?如果树中只有一个节点或没有节点,则返回None。这是我的代码:#Definitionforabinarytreenode.#classTreeNode(object):#def__init__(self,x):#self.val=x#self.left=None#self.r... 查看详情

在二叉树中查找给定节点的祖先

】在二叉树中查找给定节点的祖先【英文标题】:FindAncestorsofagivenNodeinaBinaryTree【发布时间】:2021-09-0704:18:00【问题描述】:我试图解决“查找给定节点的祖先”的问题。事实上,我能够解决这个问题。但我有一个附加问题,我... 查看详情

在二叉查找树中插入节点(代码片段)

给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的:22/\/14-->14//\336 二叉排序树(BinarySortTree),... 查看详情

如何在二叉树中找到最小值和最大值

】如何在二叉树中找到最小值和最大值【英文标题】:Howtofindtheminimum,andmaximumvaluewithinaBinaryTree【发布时间】:2021-01-2301:27:14【问题描述】:++编辑++感谢大家,我花了很多时间来让代码最终工作。这是完整的代码概览classNode:#Binar... 查看详情

在二叉树中,对于每个节点,左右节点数之差

】在二叉树中,对于每个节点,左右节点数之差【英文标题】:Inabinarytree,foreverynodethedifferencebetweenthenumberofnodesintheleftandright【发布时间】:2020-04-2222:39:03【问题描述】:在二叉树中,对于每个节点,左右子树的节点数之差最多... 查看详情

数据结构基础(代码片段)

...gt;=1.3、高度为h的二叉树至多有2^h-1个节点(h>=1)。4、在二叉树中,如果所有分支节点都有左孩子和右孩子节点,并且叶子节点都集中在二叉树的最下一层,这样的二叉树称为满二叉树。只有度为0和度为2的节点叶子节点都在... 查看详情

数据结构之二叉树(代码片段)

...见并实用的数据结构,它结合了有序数组和链表的优点,在二叉树中查找数据与在数组中查找数据一样快,在二叉树中添加删除数据的速度与在链表中一样高效。  二叉树也称为二分树、二元树,对分树等。它是n(n>=0)个... 查看详情

二叉树(代码片段)

...只有一颗子树,也要区分是左子树还是右子树性质:1)在二叉树中的第i层上最多有2i-1个节点。(i>=1)2)二叉树中如果深度为k,那么最多有2k-1个节点。(k>=1)3)在完去二叉树中,具有n个节点的完全二叉树的深度为[log2n]+1... 查看详情

使用递归 DFS 在二叉树中查找节点

】使用递归DFS在二叉树中查找节点【英文标题】:UsingrecursiveDFStofindnodeinbinarytree【发布时间】:2021-09-3007:30:31【问题描述】:我必须使用DFS搜索二叉树才能找到节点。(tok是我正在搜索的字符串)。如果找到它,它必须返回它遍... 查看详情

leetcode979.在二叉树中分配硬币(代码片段)

目录题目描述:示例1:示例2:示例3:示例4:解法:题目描述:给定一个有N个结点的二叉树的根结点root,树中的每个结点上都对应有node.val枚硬币,并且总共有N枚硬币。在一次移动中,我们可以选择两个相邻的结点,然后将一... 查看详情