您的位置:首页 > 编程语言 > Java开发

二叉排序树的建立和先序遍历和层次遍历问题之java实现

2015-01-21 22:54 246 查看
import java.util.*;

class Node

{

int key;

Node left;

Node right;

Node(int key)

{

this.key = key;

left = null;

right = null;

}

}

class Tree

{

void insert(Node root,int k)

{

int value = root.key;

Node node = new Node(k);

if(k < value)

{

if(root.left == null)

{

root.left = node;

}

else

{

insert(root.left,k);

}

}

else if(k > value)

{

if(root.right == null)

root.right = node;

else

insert(root.right,k);

}

}

void mid(Node root)

{

if(root == null)

return;

else

{

mid(root.left); //中序遍历

System.out.print(root.key + " ");

mid(root.right);

}

}

void level(Node root) //层次遍历,注意用到了LinkedList,用来存储相关的节点,模拟一个队列的方式。

{

if(root == null)

return;

List<Node> queue = new LinkedList<Node>();

queue.add(root);

while(!(queue.isEmpty()))

{

Node temp = queue.remove(0); //用队列的方式来实现层次遍历,先进先出

System.out.print(temp.key + " ");

if(temp.left != null)

queue.add(temp.left);

if(temp.right != null)

queue.add(temp.right);

}

System.out.println();

}

}

public class Test

{

public static void main(String args[])

{

int array[] = {19,12,4,5,7};

Node root = new Node(array[0]);

Tree tree = new Tree();

for(int i = 0; i < array.length; i++)

{

tree.insert(root, array[i]);

}

tree.mid(root);

System.out.println();

tree.level(root);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐