二叉树的先序创建与查找与先序,中序,后序打印

//直接贴点代码
public class Test {
public  static void main(String []args){
	//二叉树的生成与查找
		BinTree binTree=new BinTree();
		int arr[]={2,4,7,6,1,5,8};
		binTree.buileTree(arr);
		boolean flag=binTree.search(8);
		if (flag) {
			System.out.print("存在");
		}else {
			System.out.print("不存在");
		}
		binTree.print();
		
}
}

package com.tree.sym;


/*
 * 采用的方式是先序创建二叉树,然后分别通过中序和后续打印出来
 * 父节点的值比左子节点大,比右节点小
 */
public class BinTree {
	Node rootNode;
     int i=0;
	private  class Node {
		int data;
		Node left;
		Node right;
		Node(int data) {
			this.data = data;
			left = null;
			right = null;
		}
		
	}

	public BinTree() {
	}

	public void insert(int data) {
		rootNode = insert(rootNode, data);
	}
        //运用递归,把各个节点按顺序储存起来
	private Node insert(Node node, int data) {
		if (node == null) {
			node = new Node(data);
		} else {
			if (data <= node.data) {
				node.left = insert(node.left, data);
			} else {
				node.right = insert(node.right, data);
			}
		}
		return node;
	}

	public void buileTree(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			insert(arr[i]);
		}
	}
   //查找指定的某数
  public boolean search(int value){
    	return search(rootNode,value);
    }
	public boolean search( Node node,int value) {
		
			if (node.data == value) {
				return true;
			} else if (node.data > value) {
				if (node.left != null) {
					return search(node.left, value);
					
				}else {
					return false;
				}
			} else {
				if (node.right != null) {
					return search(node.right, value);
				
				}else {
					return false;
				}
			}
	}
	public void print() {
		print(rootNode);

	}
	public void  print(Node node) {
		if(node==null){
			return;
		}
		System.out.println(node.data);//通过先序打印出来
		print(node.left);
//		System.out.println(node.data);//通过中序打印出来
		print(node.right);
//		System.out.println(node.data);//通过后序打印出来
	}
}


最后祝自己女生节快乐!

你可能感兴趣的:(二叉树)