Java実装は、バイナリツリーに(ツリーを横断する)彼の党を高めるために623をLeetCode

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;
    }
}
リリース1679元の記事 ウォンの賞賛20000 + ビュー319万+

おすすめ

転載: blog.csdn.net/a1439775520/article/details/105202696