Advertisement
uopspop

Untitled

Jan 27th, 2022
796
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.07 KB | None | 0 0
  1. package com.BT;
  2.  
  3. import java.util.LinkedList;
  4. import java.util.Queue;
  5.  
  6. public class BT_List {
  7.     private Integer[] nums;
  8.     private Node root;
  9.  
  10.     public static class Node {
  11.         public Node left;
  12.         public Node right;
  13.         public int val;
  14.  
  15.         public Node(){}
  16.         public Node(int val) {
  17.             this.val = val;
  18.         }
  19.     }
  20.  
  21.     public BT_List(Integer[] nums) {
  22.         this.nums = nums;
  23.     }
  24.  
  25.     // 非本章學習重點(本方法僅模擬測試資料用)
  26.     public void buildtree () {
  27.         if (this.nums.length < 0) return;
  28.         if (this.nums[0] == null) return;
  29.  
  30.         // prepare Node instances
  31.         Node[] nodes_tmp = new Node[this.nums.length];
  32.         for (int i = 0; i < this.nums.length; i++) {
  33.             if (this.nums[i] == null) continue;
  34.             nodes_tmp[i] = new Node(this.nums[i]);
  35.         }
  36.         // set root
  37.         this.root = nodes_tmp[0];
  38.  
  39.         for (int i = 0; i < this.nums.length; i++) {
  40.             int i_left = (i + 1) * 2 - 1; // i_left_plus_one = (i_node_plus_one) * 2 -> i_left = i_left_plus_one - 1
  41.             int i_right = (i + 1) * 2 + 1 - 1; // i_right_plus_one = (i_node_plus_one) * 2 + 1-> i_right = i_right_plus_one - 1
  42.  
  43.             Node node = nodes_tmp[i];
  44.             if (node == null) continue;
  45.  
  46.             if (i_left < this.nums.length) {
  47.                 node.left = nodes_tmp[i_left];
  48.             }
  49.             if (i_right < this.nums.length) {
  50.                 node.right = nodes_tmp[i_right];
  51.             }
  52.         }
  53.     }
  54.  
  55.     /** preorder traversal (DFS left) **/
  56.     public void traverse_preorder() {
  57.         if (this.root == null) return;
  58.         this.traverse_preorder(this.root);
  59.     }
  60.  
  61.     private void traverse_preorder(Node node) {
  62.         if (node == null) return;
  63.  
  64.         System.out.print(node.val + " ");
  65.  
  66.         /** next round step **/
  67.         traverse_preorder(node.left);
  68.         traverse_preorder(node.right);
  69.     }
  70.  
  71.     /** inorder traversal (DFS left) **/
  72.     public void traverse_inorder() {
  73.         if (this.root == null) return;
  74.         this.traverse_inorder(this.root);
  75.     }
  76.  
  77.     private void traverse_inorder(Node node) {
  78.         if (node == null) return;
  79.  
  80.         traverse_inorder(node.left);
  81.  
  82.         System.out.print(node.val + " ");
  83.  
  84.         traverse_inorder(node.right);
  85.     }
  86.  
  87.     /** postorder traversal (DFS left) **/
  88.     public void traverse_postorder() {
  89.         if (this.root == null) return;
  90.         this.traverse_postorder(this.root);
  91.     }
  92.  
  93.     private void traverse_postorder(Node node) {
  94.         if (node == null) return;
  95.  
  96.         traverse_postorder(node.left);
  97.         traverse_postorder(node.right);
  98.  
  99.         System.out.print(node.val + " ");
  100.     }
  101.  
  102.     //// DFS right
  103.  
  104.     /** preorder traversal (DFS right) **/
  105.     public void traverse_preorder_dfsright() {
  106.         if (this.root == null) return;
  107.         this.traverse_preorder_dfsright(this.root);
  108.     }
  109.  
  110.     private void traverse_preorder_dfsright(Node node) {
  111.         if (node == null) return;
  112.  
  113.         System.out.print(node.val + " ");
  114.  
  115.         /** next round step **/
  116.         traverse_preorder_dfsright(node.right);
  117.         traverse_preorder_dfsright(node.left);
  118.     }
  119.  
  120.     /** inorder traversal (DFS right) **/
  121.     public void traverse_inorder_dfsright() {
  122.         if (this.root == null) return;
  123.         this.traverse_inorder_dfsright(this.root);
  124.     }
  125.  
  126.     private void traverse_inorder_dfsright(Node node) {
  127.         if (node == null) return;
  128.  
  129.         traverse_inorder_dfsright(node.right);
  130.  
  131.         System.out.print(node.val + " ");
  132.  
  133.         traverse_inorder_dfsright(node.left);
  134.     }
  135.  
  136.     /** postorder traversal (DFS right) **/
  137.     public void traverse_postorder_dfsright() {
  138.         if (this.root == null) return;
  139.         this.traverse_postorder_dfsright(this.root);
  140.     }
  141.  
  142.     private void traverse_postorder_dfsright(Node node) {
  143.         if (node == null) return;
  144.  
  145.         traverse_postorder_dfsright(node.right);
  146.         traverse_postorder_dfsright(node.left);
  147.  
  148.         System.out.print(node.val + " ");
  149.     }
  150.  
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement