書中的舉例如下:我寫的代碼是:/**
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);
????????????}
????????}
????}
}結(jié)果一直輸出11 跳不出循環(huán) 請問是為什么呢?
1 回答
已采納

Caballarii
TA貢獻(xiàn)1123條經(jīng)驗 獲得超629個贊
?while(root.left!=null||root.right!=null){
這句話是死循環(huán)啊,因為判斷條件永遠(yuǎn)為真啊
既然用了遞歸,就不需要再遞歸里面再循環(huán)了,把所有的while換成if就行了
添加回答
舉報
0/150
提交
取消