二叉排序树
- 树有很多种,每个节点 最多只能有两个节点的树称为二叉树
- 二叉树的子节点分为左子节点和右子节点
代码实现:
package com.atguigu.javase.homework;
class Tree{
//存储根节点地址值
TreeNode root;
//记录二叉树的节点数量
int size;
//二叉树节点对象
private class TreeNode{
int value;
TreeNode left;
TreeNode right;
private TreeNode(int value) {
this.value = value;
}
}
private void insert(TreeNode rootTemp,TreeNode newNode){
if(newNode.value<rootTemp.value){
if(rootTemp.left==null){
rootTemp.left=newNode;
}else{
insert(rootTemp.left,newNode);
}
}else{
if(rootTemp.right==null){
rootTemp.right=newNode;
}else{
insert(rootTemp.right,newNode);
}
}
}
/**
* 添加节点--递归思想
* @param val
*/
public void add(int val){
TreeNode newNode = new TreeNode(val);
if(root==null){
root=newNode;
}else {
insert(root,newNode);
}
size++;
}
private void view(TreeNode rootTemp){
if(rootTemp==null){
return;
}
if(rootTemp.left!=null){
view(rootTemp.left);
}
System.out.println(rootTemp.value);
if(rootTemp.right!=null){
view(rootTemp.right);
}
}
/**
* 遍历打印二叉树的节点
*/
public void travel(){
view(root);
}
public int size(){
return size;
}
}
public class TreeTest {
public static void main(String[] args) {
Tree tree = new Tree();
tree.add(60);
tree.add(30);
tree.add(80);
tree.add(90);
tree.add(70);
tree.add(40);
tree.add(20);
tree.add(10);
System.out.println(tree.size());
tree.add(1000);
tree.travel();
System.out.println(tree.size());
}
}
理解不深,后续补充