623行のバイナリツリーの増加
二分木、第一層のルート・ノード、1の深さを考えます。追加の層の値v d線における最初のノード。
ルールを追加する:深さ値d(正の整数)が与えられると、各非空ノードN層のためのD-1の深さを、2つの値を作成左サブツリー及びNの右サブツリーをV
N元の右の部分木の、ノードvの右サブツリーへの新しい接続、オリジナルNの左サブツリーは、新しいノードvの左の部分木に接続されています。
dの値が1である場合には、深さd - 1は、新しいルートノードvを作成し、存在していない、オリジナルのツリー全体がVの左の部分木として機能します。
例1:
入力:
次のようにバイナリツリーは次のとおりです。
4
/ \
2 6
/ \ /
3 1 5
V = 1
D = 2
出力:
4
/ \
1 1
/ \
2 6
/ \ /
3 1 5
例2:
入力:
次のようにバイナリツリーは次のとおりです。
4
/
2
/ \
3 1
V = 1
D = 3
出力:
4
/
2
/ \
1 1
/ \
3 1
注意:
入力された深さ値dの範囲は[1、バイナリ+ 1の最大深さ]。
バイナリ入力少なくとも一つのノード。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode addOneRow(TreeNode root, int v, int d) {
if (d == 0 || d == 1) {
TreeNode t = new TreeNode(v);
if (d == 1) t.left = root;
else t.right = root;
return t;
}
if (root != null && d > 1) {
root.left = addOneRow(root.left, v, d > 2 ? d - 1 : 1);
root.right = addOneRow(root.right, v, d > 2 ? d - 1 : 0);
}
return root;
}
}