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

インオーダーツリートラバーサルを実行するJavaプログラム


この記事では、順序ツリートラバーサルを実行する方法を理解します。 InOrderトラバーサルでは、各ノードはサブツリー間で処理されます。簡単に言うと、左側のサブツリー、ノード、右側のサブツリーにアクセスします。

以下は同じのデモンストレーションです-

入力がであると仮定します −

Run the program

必要な出力は

The In-Order traversal of the tree_object is:
5->12->6->1->9->

アルゴリズム

Step 1 - START
Step 2 - A class with the data specifications is previously defined.
Step 3 - Create a new instance of the class.
Step 4 - Initialize the instance with relevant values.
Step 5 - Invoke the method to perform inorder traversal.
Step 6 - Display the result
Step 7 - Stop

例1

ここでは、順序どおりのトラバーサルに再帰的な方法を使用しました。

class Node {
   int item;
   Node left_node, right_node;
   public Node(int key) {
      item = key;
      left_node = right_node = null;
   }
}
public class Tree {
   Node root;
   Tree() {
      root = null;
   }
   void inOrder(Node node) {
      if (node == null)
         return;
      inOrder(node.left_node);
      System.out.print(node.item + "->");
      inOrder(node.right_node);
   }
   public static void main(String[] args) {
      Tree tree_object = new Tree();
      System.out.println("A tree_object object is defined: ");
      tree_object.root = new Node(1);
      tree_object.root.left_node = new Node(12);
      tree_object.root.right_node = new Node(9);
      tree_object.root.left_node.left_node = new Node(5);
      tree_object.root.left_node.right_node = new Node(6);
      System.out.println("The In-Order traversal of the tree_object is: ");
      tree_object.inOrder(tree_object.root);
   }
}

出力

A tree_object object is defined:
The In-Order traversal of the tree_object is:
5->12->6->1->9->

例2

ここでは、順序どおりのトラバーサルに非再帰的な方法を使用しています。

import java.util.Stack;
class Node {
   int data;
   Node left_node, right_node;
   public Node(int item) {
      data = item;
      left_node = right_node = null;
   }
}
class tree {
   Node root;
   void inorder() {
      if (root == null)
         return;
      Stack<Node> temp_stack = new Stack<Node>();
      Node current_node = root;
      while (current_node != null || temp_stack.size() > 0) {
         while (current_node != null) {
            temp_stack.push(current_node);
            current_node = current_node.left_node;
         }
         current_node = temp_stack.pop();
         System.out.print(current_node.data + " ");
         current_node = current_node.right_node;
      }
   }
   public static void main(String args[]) {
      tree tree = new tree();
      System.out.println("A tree_object object is defined: ");
      tree.root = new Node(1);
      tree.root.left_node = new Node(2);
      tree.root.right_node = new Node(3);
      tree.root.left_node.left_node = new Node(4);
      tree.root.left_node.right_node = new Node(5);
      System.out.println("The In-Order traversal of the tree_object is: ");
      tree.inorder();
   }
}

出力

A tree_object object is defined:
The In-Order traversal of the tree_object is:
4 2 5 1 3

  1. Pythonでn-aryツリーの直径を見つけるプログラム

    仮に、n-aryツリーが与えられ、ツリーの直径を決定すると言われているとします。ツリーの直径は、ツリーの任意の2つのリーフノード間に存在する最長のパスです。木の直径を表す整数値を見つけて返す必要があります。 したがって、入力が次のような場合 その場合、出力は3になります。 65で構成されます(図では赤い線でマークされています)。パスの長さは3です。 これを解決するには、次の手順に従います- ans:=1 関数depth()を定義します。これが定着します ルートが空でない場合は、 0を返す 子:=値0、0を含む新しいリスト temp_chil

  2. Pythonでn-aryツリーのルートを見つけるプログラム

    配列内のn-aryツリーのノードが与えられたとします。ツリーを再構築して、ツリーのルートノードを見つけて返す必要があります。返されたノードから、ツリー全体をプレオーダー表記で表示する必要があります。 したがって、入力が次のような場合 その場合、出力は次のようになります [14, 27, 32, 42, 56, 65] ツリーのルートを使用して、ツリーのプレオーダートラバーサルを表示します。したがって、出力はツリーのプレオーダートラバーサルです。 これを解決するには、次の手順に従います- indegree:=整数値を含む新しいマップ ツリー内のノードごとに、実行します