Open yankewei opened 2 years ago
比较简单的树遍历,可以借助 php 的匿名函数递归 https://github.com/yankewei/blog/issues/8
/**
* Definition for a binary tree node.
* class TreeNode {
* public $val = null;
* public $left = null;
* public $right = null;
* function __construct($val = 0, $left = null, $right = null) {
* $this->val = $val;
* $this->left = $left;
* $this->right = $right;
* }
* }
*/
class Solution {
/**
* @param TreeNode $root
* @param Integer $val
* @param Integer $depth
* @return TreeNode
*/
function addOneRow($root, $val, $depth) {
if ($depth === 1) {
return new TreeNode($val, $root, null);
}
$dfs = function (?TreeNode $root, int $level) use (&$dfs, $val, $depth){
if ($level === $depth-1) {
$root->left = new TreeNode($val, $root->left, null);
$root->right = new TreeNode($val, null, $root->right);
return;
}
if ($root->left !== null) {
$dfs($root->left, $level + 1);
}
if ($root->right !== null) {
$dfs($root->right, $level + 1);
}
};
$dfs($root, 1); // level 设置为1,为了获取正确的节点
return $root;
}
}
给定一个二叉树的根 root 和两个整数 val 和 depth ,在给定的深度 depth 处添加一个值为 val 的节点行。
注意,根节点 root 位于深度 1 。
加法规则如下:
示例 1:
示例 2:
提示:
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/add-one-row-to-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。