剑指offer:二叉树的镜像 为什么我的while循环成了死循环呢?

书中的举例如下:

http://img.mukewang.com/57920ffe0001d7f902450304.jpg

我写的代码是:

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public void Mirror(TreeNode root) {
        while(root.left!=null||root.right!=null){
            TreeNode rootLeft = root.left;
            TreeNode rootRight = root.right;
            root.left = rootRight;
            root.right = rootLeft;
            while(root.left!=null){
            	System.out.println(root.left.val);
                Mirror(root.left);
            }
            while(root.right!=null){
            	System.out.println(root.right.val);
                Mirror(root.right);
            }
        }
    }
}

结果一直输出11 跳不出循环 请问是为什么呢?

一棵林浦斯Ding
浏览 1265回答 1
1回答

Caballarii

 while(root.left!=null||root.right!=null){这句话是死循环啊,因为判断条件永远为真啊既然用了递归,就不需要再递归里面再循环了,把所有的while换成if就行了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java