服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - java 二叉查找树实例代码

java 二叉查找树实例代码

2020-08-30 11:29Java之家 Java教程

这篇文章主要介绍了java 二叉查找树实例代码的相关资料,需要的朋友可以参考下

java 二叉查找树实例代码

1.左边<中间<右边

2.前序遍历 左中右

3.中序遍历 中左右

4.后序遍历 左右中

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
public class BinaryTree {
 
  // 二叉树的根节点
  public TreeNode rootNode ;
  // 记录搜索深度
  public int count;
 
  /**
   * 利用传入一个数组来建立二叉树
   */
  public BinaryTree(int[] data) {
    for (int i = 0; i < data. length; i++) {
      addNodeToTree(data[i]);
    }
  }
 
  /**
   * 将指定的值加入到二叉树中适当的节点
   */
  private void addNodeToTree(int value) {
    TreeNode currentNode = rootNode;
    // 建立树根
    if (rootNode == null) {
      rootNode = new TreeNode(value);
      return;
    }
 
    // 建立二叉树
    while (true) {
      // 新增的value比节点的value小,则在左子树
      if (value < currentNode.value ) {
        if (currentNode.leftNode == null) {
          currentNode.leftNode = new TreeNode(value);
          return;
        } else {
          currentNode = currentNode.leftNode;
        }
      } else { // 新增的value比节点的value大,在右子树
        if (currentNode.rightNode == null) {
          currentNode. rightNode = new TreeNode(value);
          return;
        } else {
          currentNode = currentNode. rightNode;
        }
      }
    }
  }
 
  /**
   * 中序遍历(左子树 -树根- 右子树)
   */
  public void inOrder(TreeNode node) {
    if (node != null) {
      inOrder(node. leftNode);
      System. out.print("[" + node.value + "]");
      inOrder(node. rightNode);
    }
  }
 
  /**
   * 前序遍历(树根 -左子树- 右子树)
   */
  public void preOrder(TreeNode node) {
    if (node != null) {
      System. out.print("[" + node.value + "]");
      preOrder(node. leftNode);
      preOrder(node. rightNode);
    }
  }
 
  /**
   * 后序遍历(左子树 -右子树- 树根)
   */
  public void postOrder(TreeNode node) {
    if (node != null) {
      postOrder(node. leftNode);
      postOrder(node. rightNode);
      System. out.print("[" + node.value + "]");
    }
  }
 
  /**
   * 从二叉树中查找指定value
   */
  public boolean findTree(TreeNode node, int value) {
    if (node == null) {
      System. out.println("共搜索" + count + "次");
      return false;
    } else if (node.value == value) {
      System. out.println("共搜索" + count + "次");
      return true;
    } else if (value < node.value) {
      count++;
      return findTree(node.leftNode , value);
    } else {
      count++;
      return findTree(node.rightNode , value);
    }
  }
 
  /**
   * 利用中序遍历进行排序
   */
  public void sort() {
    this.inOrder(rootNode );
  }
 
  class TreeNode {
    int value ;
    TreeNode leftNode;
    TreeNode rightNode;
 
    public TreeNode(int value) {
      this.value = value;
      this.leftNode = null;
      this.rightNode = null;
    }
  }
 
  public static void main(String[] args) {
    int[] content = { 50, 35, 27, 45, 40, 48, 78, 56, 90 };
 
    BinaryTree tree = new BinaryTree(content);
    System. out.println("前序遍历:" );
    tree.preOrder(tree. rootNode);
    System. out.println("\n中序遍历:" );
    tree.inOrder(tree. rootNode);
    System. out.println("\n后序遍历:" );
    tree.postOrder(tree. rootNode);
 
    System. out.println("\n\n开始搜索:" );
    boolean isFind = tree.findTree(tree.rootNode, 48);
    System. out.println("是否搜索到" + 48 + ":" + isFind);
 
    System. out.println("\n进行排序:" );
    tree.sort();
  }
}

前序遍历:

?
1
[50][35][27][45][40][48][78][56][90]

中序遍历:

?
1
[27][35][40][45][48][50][56][78][90]

后序遍历:

?
1
[27][40][48][45][35][56][90][78][50]

开始搜索:

共搜索3次

是否搜索到48:true

进行排序:

?
1
[27][35][40][45][48][50][56][78][90]

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:https://my.oschina.net/u/1037605/blog/775018

延伸 · 阅读

精彩推荐