javaBST - juedaiyuer/researchNote GitHub Wiki
#二叉搜索数算法BST#
##节点定义##
package myAlgorithm;
/**
* Created by juedaiyuer on 16-9-28.
*/
public class TreeNode {
int value;
TreeNode left;
TreeNode right;
public TreeNode(int value){
this.value = value;
left = null;
right = null;
}
}
##插入功能(添加节点)##
public TreeNode insert(int key) {
//新增节点
TreeNode newNode = new TreeNode(key);
//当前节点
TreeNode current = root;
//上个节点
TreeNode parrent = null;
//如果根节点为空
if (current == null) {
root = newNode;
return newNode;
}
while (true) {
parrent = current;
if (key < current.value) {
current = current.left;
if (current == null) {
parrent.left = newNode;
return newNode;
}
} else {
current = current.right;
if (current == null) {
parrent.right = newNode;
return newNode;
}
}
}
}
// 测试
##删除节点##
##最大值与最小值##
// 最大值一直往右走,最小值一直往左走
public int max(){
TreeNode node = root;
TreeNode parrent = null;
while (node != null){
parrent = node;
node = node.right;
}
return parrent.value;
}
public int min(){
TreeNode node = root;
TreeNode parrent = null;
while (node != null){
parrent = node;
node = node.left;
}
return parrent.value;
}
##遍历树##
// 中序遍历,迭代法
public void display(TreeNode node) { if (node != null) { display(node.left); System.out.println(node.value + ","); display(node.right); } }
##source##