关键词:
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枚硬币。在一次移动中,我们可以选择两个相邻的结点,然后将一... 查看详情