Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのバイナリツリーの奇数レベルノードと偶数レベルノードの合計の違い


問題の説明

与えられた二分木で、奇数レベルと偶数レベルのノードの合計の違いを見つけるプログラムを作成します。レベル1でルートを想定し、レベル2でルートの左/右の子などを想定します。

        5
      /   \
      2     6
     /  \     \
    1     4    8
   /    /  \
  3    7    9

Sum of nodes at odd level
= 5 + 1 + 4 + 8
= 18
Sum of nodes at even level
= 2 + 6 + 3 + 7 + 9
= 27
Difference = -9.

解決策

再帰的走査を使用します。トラバーサル中に、ルートノードとその左右の子の差を返します。

以下は、必要な出力を見つけるためのJavaのプログラムです。

class Node {
   int data;
   Node left, right;
   Node(int data){
      this.data = data;
      this.left = this.right = null;
   }
}
public class JavaTester {
   public static Node getTree(){
      Node root = new Node(5);
      root.left = new Node(2);
      root.right = new Node(6);
      root.left.left = new Node(1);
      root.left.right = new Node(4);
      root.left.right.left = new Node(3);
      root.right.right = new Node(8);
      root.right.right.right = new Node(9);
      root.right.right.left = new Node(7);
      return root;
   }
   public static int difference(Node node){
      if(node == null) return 0;
      return node.data - difference(node.left) - difference(node.right);
   }
   public static void main(String args[]){
      Node tree = getTree();
      System.out.println(difference(tree));
   }
}

出力

-9

  1. JavaでのArrayListとHashSetの違い

    HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり

  2. 奇数桁と偶数桁の合計の差のためのPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 −整数の場合、奇数桁の合計と偶数桁の合計の差が0であるかどうかを計算する必要があります。 ブルートフォースアプローチでは、数値のすべての偶数桁と奇数桁の合計を計算し、それらを減算して答えを計算します。 計算時間を短縮するために、精神数学の概念を使用します。 上記の制約は、数値が11で割り切れる場合にのみ当てはまります。したがって、以下の実装では、数値の11で割り切れる可能性を確認します。 ここで、複雑さはO(n)から、分割可能性と比較に関係する一定の時間に減少します。 それでは