龙空技术网

Java实现二叉树的三种遍历方式

java保佑我发大财 188

前言:

而今同学们对“二叉树的遍历算法java”大体比较讲究,姐妹们都想要剖析一些“二叉树的遍历算法java”的相关文章。那么小编在网摘上汇集了一些对于“二叉树的遍历算法java””的相关文章,希望兄弟们能喜欢,小伙伴们一起来了解一下吧!

二叉树的基础遍历

1:前序遍历:先访问根结点,然后再访问左子树,最后访问右子树;

2:中序遍历:先访问左子树,然后再访问根结点,最后访问右子树;

3:后序遍历:先访问左子树,然后再访问右子树,最后访问根结点;

示例如下:前序遍历的API设计:

public Queue<Key> preErgodic():使用前序遍历,获取整个树中的所有键private void preErgodic(Node x,Queue<Key> keys):使用前序遍历,把指定树x中的所有键放入到keys队列中
实现步骤:把当前结点的key放入到队列中;找到当前结点的左子树,如果不为空,递归遍历左子树;找到当前结点的右子树,如果不为空,递归遍历右子树;代码实现:
//使用前序遍历获取整个树中所有的键    public Queue<Key> preErgoidic(){         Queue<Key> keys = new Queue<>();        preErgoidic(root,keys);        return keys;    }    //使用前序遍历获取指定树x的所有键,并放到Keys队列中    private void preErgoidic(Node x, Queue<Key> keys){         if(x == null){             return;        }        //把x结点的key放入到keys中        keys.enQueue(x.key);        //递归遍历x结点的左子树        if(x.left != null){             preErgoidic(x.left,keys);        }        //递归遍历x结点的右子树        if(x.right != null){             preErgoidic(x.right,keys);        }    }
中序遍历的API设计:
public Queue midErgodic():使用中序遍历,获取整个树中的所有键private void midErgodic(Node x,Queue keys):使用中序遍历,把指定树x中的所有键放入到keys队列中
实现步骤:找到当前结点的左子树,如果不为空,递归遍历左子树;把当前结点的key放入到队列中;找到当前结点的右子树,如果不为空,递归遍历右子树;代码实现:
//使用中序遍历获取整个树中所有的键    public Queue<Key> midErgoidic(){         Queue<Key> keys = new Queue<>();        midErgoidic(root,keys);        return keys;    }    //使用中序遍历获取指定树x的所有键,并放到Keys队列中    private void midErgoidic(Node x, Queue<Key> keys) {         if(x == null){             return;        }        //递归遍历x结点的左子树        if(x.left != null){             midErgoidic(x.left,keys);        }        //把x结点的key放入到keys中        keys.enQueue(x.key);        //递归遍历x结点的右子树        if(x.right != null){             midErgoidic(x.right,keys);        }    }
后序遍历的API设计:
public Queue afterErgodic():使用中序遍历,获取整个树中的所有键private void afterErgodic(Node x,Queue keys):使用中序遍历,把指定树x中的所有键放入到keys队列中
实现步骤:找到当前结点的左子树,如果不为空,递归遍历左子树;找到当前结点的右子树,如果不为空,递归遍历右子树;把当前结点的key放入到队列中;代码实现:
//后续遍历    public Queue<Key> afterErgoidic(){         Queue<Key> keys = new Queue<>();        afterErgoidic(root,keys);        return keys;    }    //使用中序遍历获取指定树x的所有键,并放到Keys队列中    private void afterErgoidic(Node x, Queue<Key> keys) {         if(x == null){             return;        }        //递归遍历x结点的左子树        if(x.left != null){             afterErgoidic(x.left,keys);        }        //递归遍历x结点的右子树        if(x.right != null){             afterErgoidic(x.right,keys);        }        //把x结点的key放入到keys中        keys.enQueue(x.key);    }

原文链接:

标签: #二叉树的遍历算法java