1.遍历模式
前序遍历:根->左->右(深度优先)
中序遍历:左->根->右(深度优先)
后序遍历:左->右->根(深度优先)
层次遍历:每一层从左到右(广度优先)
2.例子:
3.前序遍历的实现思想和API构建:
代码实现:
//前序遍历
//获取整个树中所有的键
public Queue<key> preTraversal(){
Queue<key> keys =new Queue<key>();
preTraversal(root,keys);
return keys;
}
//获取指定树x的所有键,并放到key队列中
private void preTraversal(Node x,Queue<key> keys){
//安全性验证
if(x==null){
return;
}
//把x节点的key放到keys中
keys.InQueue(x.key);
//递归遍历x节点的左子树
if(x.left!=null){
preTraversal(x.left,keys);
}
//递归遍历x节点的右子树
if(x.right!=null){
preTraversal(x.right,keys);
}
}
4.中序遍历的实现思想和API构建:
代码实现:
//中序遍历
//使用中序遍历来获取树中所有的键
public Queue<key> midTraversal(){
Queue<key> keys =new Queue<key>();
midTraversal(root,keys);
return keys;
}
//使用中序遍历来获取指定树x中的所有键,并存放到keys中
private void midTraversal(Node x,Queue<key> keys){
//安全性校验
if(x==null){
return;
}
//先递归,把左子树中所有的键放到keys中
if(x.left!=null){
midTraversal(x.left,keys);
}
//把当前节点的键放到keys中
keys.InQueue(x.key);
//再递归,把右子树中的键放到keys中
if(x.right!=null){
midTraversal(x.right,keys);
}
}
5.后序遍历的实现思想和API构建:
代码实现:
//后序遍历
//使用后序遍历来获取树中所有的键
public Queue<key> backTraversal(){
Queue<key> keys =new Queue<key>();
backTraversal(root,keys);
return keys;
}
//使用后序遍历来获取指定树x中的所有键,并存储到keys队列中
private void backTraversal(Node x,Queue<key> keys){
//安全性校验
if(x==null){
return;
}
//先递归,把左子树的键全部放到keys中
if(x.left!=null){
backTraversal(x.left,keys);
}
//再递归把右子树中的键全部放到keys中
if(x.right!=null){
backTraversal(x.right,keys);
}
//最后把x节点的键放到keys中
keys.InQueue(x.key);
}
6.层次遍历的实现思想和API构建:
代码实现:
//层次遍历
//使用层次遍历获取整个树中所有的键
public Queue<key> layerTraversal(){
//定义两个队列,分别存储树中的键和树中的节点
Queue<key> keys =new Queue<key>();
Queue<Node> nodes =new Queue<Node>