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())<Integer.valueOf(node_new.getValue())){//新节点值比当前大,往其右放
		temp_current=temp_current.getRightTreeNode();
		 if (temp_current == null) {
            temp_root.setRightTreeNode(node_new);
             return;
         }
}else{
	temp_current=temp_current.getLeftTreeNode();
	 if (temp_current == null) {
       temp_root.setLeftTreeNode(node_new);
        return;
    }
}
		}
	}
}

class Node_ {
	private Node_ leftTreeNode; // 左节点
	private Node_ rightTreeNode; // 右节点
	private String value;// 值

	public Node_(String value) {
		super();
		this.value = value;
	}

	public Node_ getLeftTreeNode() {
		return leftTreeNode;
	}

	public void setLeftTreeNode(Node_ leftTreeNode) {
		this.leftTreeNode = leftTreeNode;
	}

	public Node_ getRightTreeNode() {
		return rightTreeNode;
	}

	public void setRightTreeNode(Node_ rightTreeNode) {
		this.rightTreeNode = rightTreeNode;
	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}

}}

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

	// 先序遍历
	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() + " ");// 最后根
		}
		
	}
发布了233 篇原创文章 · 获赞 20 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_42565135/article/details/102944281
今日推荐