623 . 1行をツリーに追加する( JavaScriptソリューション)
5242 ワード
説明
バイナリツリーのルートを与えられて、値vと深さdを与えられて、与えられた深さdで値vでノードの行を加える必要があります.
追加ルールは:正の整数深さdを与えられた場合、深さD - 1の各NULLツリーノードnに対して、値vをn個の左のサブツリールートと右のサブツリールートとして2つのツリーノードを作成します.そして、Nの元の左のサブツリーは新しい左のサブツリールートの左下のサブツリーでなければなりません、その元の右のサブツリーは新しい右下の木のルートの右のサブツリーでなければなりません.深さdが1であるならば、深さD - 1が全くないことを意味してください、そして、次に、値vで木のノードを全部の原木の新しいルートとしてつくってください、そして、元の木は新しいルートの左の部分木です.
解決方法
時間複雑性:O(n)
空間の複雑さ: O ( n )
// DFS approach
var addOneRow = function(root, v, d) {
if (d === 1) {
const node = new TreeNode(v);
node.left = root;
return node;
}
insert(v, root, 1, d);
return root;
}
function insert(val, node, depth, n) {
if (node === null)
return;
// Stop when we hit n - 1 and add the new nodes at the current level
if (depth == n - 1) {
let t = node.left;
node.left = new TreeNode(val);
node.left.left = t;
t = node.right;
node.right = new TreeNode(val);
node.right.right = t;
}
// Keep traversing down the tree if we are not on the correct level
else {
insert(val, node.left, depth + 1, n);
insert(val, node.right, depth + 1, n);
}
}
Reference
この問題について(623 . 1行をツリーに追加する( JavaScriptソリューション)), 我々は、より多くの情報をここで見つけました https://dev.to/cod3pineapple/623-add-one-row-to-tree-javascript-solution-1ogaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol