什么是有序二叉树?
定义:左子树小于 父节点,右子树大于父节点
java实现
首先 定义节点类
/**
* 节点类
*/
public class TreeNode {
private TreeNode leftTreeNode;//左子树
private TreeNode rightTreeNode;//右子树
private int value;//值
public TreeNode(int value){
this.value = value;
}
@Override
public String toString() {
return "TreeNode{" +
"leftTreeNode=" + leftTreeNode +
", rightTreeNode=" + rightTreeNode +
", value=" + value +
'}';
}
public TreeNode getLeftTreeNode() {
return leftTreeNode;
}
public void setLeftTreeNode(TreeNode leftTreeNode) {
this.leftTreeNode = leftTreeNode;
}
public TreeNode getRightTreeNode() {
return rightTreeNode;
}
public void setRightTreeNode(TreeNode rightTreeNode) {
this.rightTreeNode = rightTreeNode;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
然后定义树管理类
//用递归实现这颗树
// ------》递归出口和递归表达式
// --------f(node,value) = f(node.left,value) node.getLeftTreeNode == null;
// = f(node.right,value) node.getRightTreeNode == null;
public void insertDiGui(TreeNode node,int value){
TreeNode newNode = new TreeNode(value);
if(root== null){
root = newNode;
return;
}
if(node.getValue()>newNode.getValue()){
if(node.getLeftTreeNode()!=null){
insertDiGui(node.getLeftTreeNode(),value);
}else {
node.setLeftTreeNode(newNode);
}
}else {
if(node.getRightTreeNode()!=null){
insertDiGui(node.getRightTreeNode(),value);
}else {
node.setRightTreeNode(newNode);
}
}
}