The creation and traversal of binary sort tree

Create node

class Node{
	int value;
	Node left;
	Node right;
	public Node(int value) {
		super();
		this.value = value;
	}
	
	

	@Override
	public String toString() {
		return "Node [value=" + value + "]";
	}
	}

Add method traversal method

//添加节点 递归添加 需要满足二叉排序树
	public void add(Node node) {
		if(node == null) {
			return;}
		//判断传入节点 和当前子树的根节点的关系
		if(node.value < this.value) {
			if(this.left == null) {
				//如果当前节点的左子节点为空
				this.left = node;
			}else {
				//如果不为空 向左子节点递归
				this.left.add(node);
			}
		}else {//添加的节点大于当前节点的值
			if(this.right == null) {
				this.right = node;
			}else {
				this.right.add(node);
			}
		}
	}
	//中序遍历
	public void zhongxu() {
		if(this.left != null) {
			this.left.zhongxu();
		}
		System.out.println(this);
		if(this.right != null) {
			this.right.zhongxu();
			
		}
	}

Binary tree

//创建二叉排序树
class BinarySortTree2{
	private Node root;
	public void add(Node node) {
		if(root == null) {
			root = node;
		}else {
			root.add(node);
		}
	}
	//中序遍历
	public void zhongxu() {
		if(root!=null) {
			root.zhongxu();
		}else {
			System.out.println("kong");
		}
	}
}

test

int[] arr = {7,3,10,12,5,1,9};
BinarySortTree2 binarySortTree2 = new BinarySortTree2();
for(int i = 0;i < arr.length;i++) {
	binarySortTree2.add(new Node(arr[i]));
}
		
//中序遍历二叉排序树
binarySortTree2.zhongxu();

Guess you like

Origin blog.csdn.net/NuanShuTT/article/details/108252833