java实现二叉排序树-------以及先序遍历、中序遍历、后序遍历

可以实现将一个值插入已将拍好的二叉树中

代码:



class Client_port {

	public static void main(String[] args) {
		Client_port cp=new Client_port();
		cp.insert_node("17");
		cp.insert_node("6");
		System.out.println(cp.getRoot_node().getValue());
	}

	private Node_ root_node;// 创建一个根节点

	public Node_ getRoot_node() {
		return root_node;
	}

	public void setRoot_node(Node_ root_node) {
		this.root_node = root_node;
	}

	// 插入
	public void insert_node(String node_value) {
		Node_ node_new = new Node_(node_value);// 创建成一个节点
		// 如果根节点为空,则该节点就为根节点 为其初始化
		if (root_node == null) {
			root_node = node_new;
			root_node.setLeftTreeNode(null);
			root_node.setRightTreeNode(null);
		} else {// 如果根节点不为空,就循环判断,找到缺孩子的节点(这才可以插入)-----判断他的左孩子与新节点比较,之后判断他的右孩子与新节点值比较,最后放到正确的位置

	Node_ temp_current=root_node;//创建一个临时根节点,即最终新节点的位置
	Node_ temp_root;
	while(true){
		temp_root=temp_current;//当前节点不为空,遍历:当前作为父节点 ,其子节点作为当前节点
		if(Integer.valueOf(temp_current.getValue())

先序遍历、中序遍历、后序遍历

	// 先序遍历
	public void pre_select(Node_ node_) {
		if (node_ != null) {
			System.out.print(node_.getValue() + " ");// 先根
			pre_select(node_.getLeftTreeNode());// 左字数
			pre_select(node_.getRightTreeNode());// 再有字数
		}
		
	}

	// 中序遍历
	public void in_select(Node_ node_) {
		if (node_ != null) {

			pre_select(node_.getLeftTreeNode());// 先左字数
			System.out.print(node_.getValue() + " ");// 再根
			pre_select(node_.getRightTreeNode());// 再有字数
		}
		
	}

	// 后序遍历
	public void after_select(Node_ node_) {
		if (node_ != null) {

			pre_select(node_.getLeftTreeNode());// 左字数
			pre_select(node_.getRightTreeNode());// 再有字数
			System.out.print(node_.getValue() + " ");// 最后根
		}
		
	}

 

你可能感兴趣的:(IT小媛upup)