226. 翻转二叉树

栈也可以、队列也可以,能够遍历整个二叉树就可以把它们交换

栈的方法

class Solution {
    public TreeNode invertTree(TreeNode root) {
        
    	TreeNode newtree = root;
    	if(root==null)
    		return root;
    	Stack<TreeNode> newstack = new Stack();
    	newstack.push(root);
    	while(!newstack.isEmpty()){
    		newtree = newstack.pop();
    		if(newtree.left!=null&&newtree.right!=null){
    			TreeNode temp = newtree.left;
    			newtree.left = newtree.right;
    			newtree.right = temp;
    			newstack.push(newtree.left);
    			newstack.push(newtree.right);    			
    		}
    		else if(newtree.left==null&&newtree.right!=null){
    			TreeNode temp = newtree.left;
    			newtree.left = newtree.right;
    			newtree.right = temp;
    			newstack.push(newtree.left);
    		}
    		else if(newtree.left!=null&&newtree.right==null){
    			TreeNode temp = newtree.left;
    			newtree.left = newtree.right;
    			newtree.right = temp;
    			newstack.push(newtree.right);
    		}
    	}
    	return root;
    }
}

第一次成功递归:

class Solution {
    public TreeNode invertTree(TreeNode root) {
        
    	if(root==null){
    		return root;
    	}
		TreeNode temp = root.left;
		root.left = root.right;
		root.right = temp;
		root.left = invertTree(root.left);
		root.right = invertTree(root.right);
    	return root;
    
    }
}

递归三要素:1、出口条件  2、初始条件  3、由n到n+1和由n+1返回n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值