二叉樹(java版),二叉樹java版
//節點類package com.huowolf.test2;public class Node {private int keyData;//關鍵字private int otherData;//其他資料private Node leftNode;//左子節點private Node rightNode;//右子節點public Node(int keyData, int otherData) {this.keyData = keyData;this.otherData = otherData;}public int getKeyData() {return keyData;}public void setKeyData(int keyData) {this.keyData = keyData;}public int getOtherData() {return otherData;}public void setOtherData(int otherData) {this.otherData = otherData;}public Node getLeftNode() {return leftNode;}public void setLefNode(Node leftNode) {this.leftNode = leftNode;}public Node getRightNode() {return rightNode;}public void setRightNode(Node rightNode) {this.rightNode = rightNode;}//顯示方法public void display() {System.out.println(keyData+", "+otherData);}}
package com.huowolf.test2;public class Tree {private Node root;public Node getRoot() {return root;}//插入方法public void insert(int keyData, int otherData) {Node newNode = new Node(keyData, otherData);if(root == null) {root = newNode;}else {Node current = root;Node parent;//儲存當前節點的父節點的引用while(true) {parent = current;if(keyData < current.getKeyData()) {current = current.getLeftNode();if(current == null) {parent.setLefNode(newNode);return;}} else {current = current.getRightNode();if(current == null) {parent.setRightNode(newNode);return;}}}}}//尋找方法public Node find(int keyData) {Node current = root;while(current.getKeyData() != keyData) {if(keyData < current.getKeyData()) {current = current.getLeftNode();} else {current = current.getRightNode();}if(current == null) {return null;}}return current;}//修改方法public void change(int keyData, int newOtherData) {Node findNode = find(keyData);findNode.setOtherData(newOtherData);}//先序遍曆public void preOrder(Node node) {if(node != null) {node.display();preOrder(node.getLeftNode());preOrder(node.getRightNode());}}//中序遍曆public void inOrder(Node node) {if(node != null) {inOrder(node.getLeftNode());node.display();inOrder(node.getRightNode());}}//後序遍曆public void postOrder(Node node) {if(node != null) {postOrder(node.getLeftNode());postOrder(node.getRightNode());node.display();}}}
//測試類別package com.huowolf.test2;public class Tree_Test {public static void main(String[] args) {Tree tree = new Tree();tree.insert(80, 75);tree.insert(49, 49);tree.insert(42, 42);tree.insert(30, 30);tree.insert(45,45);tree.insert(150, 110);tree.insert(90, 90);tree.insert(130, 130);tree.insert(82,86);//修改結點tree.change(90, 92);Node findNode = tree.find(90);findNode.display();System.out.println("先序遍曆:");tree.preOrder(tree.getRoot());System.out.println("-------------------------");System.out.println("中序遍曆:");tree.inOrder(tree.getRoot());System.out.println("-------------------------");System.out.println("後序遍曆:");tree.postOrder(tree.getRoot());}}