二叉树 java实现

java

class Node {

private int data;

// 其他数据

private int otherData;

private Node left;

private Node right;

public Node(int data, int otherData) {

this.data = data;

this.otherData = otherData;

}

public int getData() {

return data;

}

public void setData(int data) {

this.data = data;

}

public int getOtherData() {

return otherData;

}

public void setOtherData(int otherData) {

this.otherData = otherData;

}

public Node getLeft() {

return left;

}

public void setLeft(Node left) {

this.left = left;

}

public Node getRight() {

return right;

}

public void setRight(Node right) {

this.right = right;

}

// 显示方法

public void display() {

System.out.println(data + "," + otherData);

}

}

class Tree {

private Node root;

/**

* 插入节点

*

* @param keyData

* @param otherData

*/

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.getData()) {

current = current.getLeft();

if (current == null) {

parent.setLeft(newNode);

return;

}

} else {

current = current.getRight();

if (current == null) {

parent.setRight(newNode);

return;

}

}

}

}

}

/**

* 查找节点

*

* @param keyData

* @return

*/

public Node find(int keyData) {

Node current = root;

while (current.getData() != keyData) {

if (keyData < current.getData()) {

current = current.getLeft();

} else {

current = current.getRight();

}

if (current == null) {

return null;

}

}

return current;

}

/**

* 修改方法

*

* @param keyData

* 根据keyData查找节点

* @param newOtherData

* 节点新值

*/

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.getLeft());

preOrder(node.getRight());

}

}

// 中序遍历

public void inOrder(Node node) {

if (node != null) {

inOrder(node.getLeft());

node.display();

inOrder(node.getRight());

}

}

// 后序遍历

public void endOrder(Node node) {

if (node != null) {

endOrder(node.getLeft());

endOrder(node.getRight());

node.display();

}

}

public Node getRoot() {

return root;

}

}

/**

* 测试

* @author sun

*

*/

public class MyTree {

public static void main(String[] args) {

Tree tree = new Tree();

tree.insert(10, 20);

tree.insert(30, 49);

tree.insert(15, 42);

tree.insert(25, 30);

tree.insert(40, 45);

tree.insert(90, 90);

tree.insert(150, 150);

tree.insert(130, 130);

tree.insert(80, 82);

tree.preOrder(tree.getRoot());

}

}

  

以上是 二叉树 java实现 的全部内容, 来源链接: utcz.com/z/391069.html

回到顶部