Java 程序执行中序树遍历

javacampus interviewserver side programmingprogramming更新于 2024/8/8 19:13:00

在本文中,我们将了解如何执行中序树遍历。在中序遍历中,每个节点都在子树之间进行处理。简单来说,访问左子树、节点,然后访问右子树。

下面是相同的演示 −

假设我们的输入是

Run the program

期望的输出将是

tree_object 的中序遍历为:
5->12->6->1->9->

算法

步骤 1 - 开始
步骤 2 - 预先定义具有数据规范的类。
步骤 3 - 创建该类的新实例。
步骤 4 - 使用相关值初始化实例。
步骤 5 - 调用方法执行中序遍历。
步骤 6 - 显示结果
步骤 7 - 停止

示例 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;
   }
}
public 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

相关文章