這篇文章主要介紹了java 二元查找樹實例代碼的相關資料,需要的朋友可以參考下
#java 二叉查找樹實例代碼
#1.左邊
2.前序遍歷左中右
3.中序遍歷中左右
4.後序遍歷左右中
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(); } }
前序遍歷:
[50][35][27][45][40][48][78][56][90]
中序遍歷:
[27][35][40][45][48][50][56][78][90]
後序遍歷:
[27][40][48][45][35][56][90][78][50]
開始搜尋:
#共搜尋3次
是否搜尋到48:true
進行排序:
[27][35][40][45][48][50][56][78][90]
以上是java實作二元查找樹的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版
中文版,非常好用

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能