623. 在二叉树中增加一行
Posted Debroon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了623. 在二叉树中增加一行相关的知识,希望对你有一定的参考价值。
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. 在二叉树中增加一行的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 623 在二叉树中增加一行 BFS与DFS
LeetCode 623 在二叉树中增加一行[BFS DFS] HERODING的LeetCode之路