改善广度优先逻辑

时间:2015-04-24 03:21:04

标签: java logic binary-search-tree breadth-first-search

我有一段时间的作业。在我的教授给它评分之后,他在代码中留下了一条评论说,"简化逻辑"。他没有取得任何积分,但我无法看到另一种接近它的方式......我对我有意义并且有所作为。那么,有人可以告诉我一种方法来改善我拥有的东西吗?我才知道...

    public void breadthFirstTraversal(){
        breadthFirstTraversal(root);
    }

    private void breadthFirstTraversal(TreeNode<E> node){

        Queue<TreeNode<E>> queue = new LinkedList<>();

        queue.add(node);

        while(!queue.isEmpty()){
            TreeNode<E> temp = queue.poll();
            System.out.print(temp.data + " ");

            if(temp.left != null && temp.right == null){
                queue.add(temp.left);
            }else if(temp.left == null && temp.right != null){
                queue.add(temp.right);
            }else if(temp.left != null && temp.right != null){
                queue.add(temp.left);
                queue.add(temp.right);
            }
        }
    }

提前谢谢!

1 个答案:

答案 0 :(得分:2)

temp.right为空对于是否应添加temp.left并且temp.left为空而对添加的temp.right没有影响。您可以将它减少到两个ifs:

if( temp.left != null ) queue.add( temp.left );
if( temp.right != null ) queue.add( temp.right );