数据结构:二叉树构建与遍历(Java实现)

如下所示,是一个二叉树,从根节点开始,每个节点最多有两个子节点。

树是一种常见的数据结构,而二叉树又是一种特殊的树结构,这里介绍二叉树特点:

  • 每个节点最多有两个子节点
  • 节点的左子节点中的数据小于节点中的数据
  • 节点的右子节点中的数据大于节点中的数据

 这里给出一个由Java实现的二叉树:

package com.xxx.algorithm.tree;
public class BST {
	Node root = null;
	public void insert(int data){
		Node node = new Node(data);
		if(root==null){
			root = node;
		}else{
			Node curNode = root;
			Node parent = null;
			while(true){
				parent = curNode;
				if(data<curNode.data){
					curNode = curNode.left;
					if(curNode==null){
						parent.left = node;
						break;
					}
				}else{
					curNode = curNode.right;
					if(curNode==null){
						parent.right = node;
						break;
					}
				}
			}
		}	
	}
	
	public void inOrder(Node node){
		if(node!=null){
			inOrder(node.left);
			show(node);
			inOrder(node.right);
		}
	}
	
	public void preOrder(Node node){
		if(node!=null){
			show(node);
			preOrder(node.left);
			preOrder(node.right);
		}
	}
	
	public void postOrder(Node node){
		if(node!=null){
			postOrder(node.left);
			postOrder(node.right);
			show(node);
		}
	}
	
	public void show(Node node){
		System.out.print(node.data+" ");
	}
	
	public static void main(String[] args) {
		BST tree = new BST();
		tree.insert(20);
		tree.insert(10);
		tree.insert(50);
		tree.insert(18);
		tree.insert(13);
		tree.insert(7);
		tree.insert(6);
		tree.insert(8);
		tree.insert(19);
		tree.insert(55);
		tree.insert(23);
		tree.insert(21);
		tree.insert(75);
		tree.insert(52);
		tree.insert(40);
		System.out.println("preOrder:");
		tree.preOrder(tree.root);
		System.out.println();
		System.out.println("inOrder:");
		tree.inOrder(tree.root);	
		System.out.println();
		System.out.println("postOrder:");
		tree.postOrder(tree.root);
	}
	
	class Node{
		int data;
		Node left;
		Node right;
		public Node(int data){
			this.data = data;
			this.left = null;
			this.right = null;
		}
	}
}

这段代码通过insert(int data)方法成功构建了文章开始看到的二叉树。最终通过三种遍历方式,看到遍历结果如下:

猜你喜欢

转载自blog.csdn.net/feinifi/article/details/93254664