首页 > 其他分享 >day15

day15

时间:2022-10-05 22:45:48浏览次数:38  
标签:right TreeNode day15 return null root left

二叉树的层序遍历

模板

//利用一个指针来记录每一层的节点的数量(很关键)
class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> reslist=new ArrayList<Integer>();
        if(root==null){
            return reslist;
        }
        Queue<TreeNode> que=new LinkedList<>();
        que.offer(root); //先把根节点放入队列
        while(!que.isEmpty()){
            int len=que.size();   //len记录当层节点的数量,下面的while循环根据len来循环。  
            while(len>0){
                TreeNode tmpNode=que.poll();  //poll()的次数就是len的值
                if(tmpNode.left!=null){//每poll出来一个节点 就把他的子节点放入队列中
                    que.offer(tmpNode.left);
                }
                if(tmpNode.right!=null){
                    que.offer(tmpNode.right);
                }
                len--;
            }
        }
        return reslist;
    }
}

leetcode226

class Solution {//递归方法:中左右,左右中 都可以。但是左中右不行:先左中之后,中的右就是原来的左,这样就处理不到,原始的右了,如果想用中序遍历  就把right改成left,多处理一次left 其实就是处理原来的right
    public TreeNode invertTree(TreeNode root) {
        if(root==null) return null;
        
        invertTree(root.left);
        invertTree(root.right);
        swap(root);    
        return root;
    }
    private void swap(TreeNode root){
        TreeNode tempNode=root.left;
        root.left=root.right;
        root.right=tempNode;
    }
}
class Solution {//中序遍历
    public TreeNode invertTree(TreeNode root) {
        if(root==null) return null;
        
        invertTree(root.left);
        swap(root);
        invertTree(root.left);
        
        return root;
    }
    private void swap(TreeNode root){
        TreeNode tempNode=root.left;
        root.left=root.right;
        root.right=tempNode;
    }
}

leetcode 对称二叉树

class Solution {
    public boolean isSymmetric(TreeNode root) {
        return compare(root.left,root.right);
    }
    public boolean compare(TreeNode left,TreeNode right){
	//递归结束条件:1左右都为空true 2左空右不空或左不空右空 false 3左值不等于右值 false 
		if(left==null&&right==null) return true;
        if(left==null&&right!=null) return false;
        if(left!=null&&right==null) return false;
        if(left.val!=right.val) return false;
        return compare(left.left,right.right)&&compare(left.right,right.left);
    }
}

标签:right,TreeNode,day15,return,null,root,left
From: https://www.cnblogs.com/wdnmdp/p/16756631.html

相关文章