代码随想录算法训练营第十五天|102. 二叉树的层序遍历 226. 翻转二叉树 101. 对称二叉树

今日主要题目

102. 二叉树的层序遍历

226. 翻转二叉树

101. 对称二叉树

主要学习网址

代码随想录

做题思路与具体代码

题目一:102. 二叉树的层序遍历

做题思路

本题采用递归+队列解法,每次就存入该层所有节点,然后将该层节点加进答案中,再向队列中加节点的字节点,记住要利用好队列头

具体代码
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
    //层序遍历解法
    //广度优先搜索算法
    //定义结果集
    List<List<Integer>> result=new ArrayList<List<Integer>>();
    //定义一个队列
    Queue<TreeNode> queue=new LinkedList<>();
    //如果为空,直接返回
    if(root==null){
        return result;
    }
    //把根部节点加到队列中
    queue.offer(root);
    //遍历队列加到结果集中
    while(!queue.isEmpty()){
        //新初始化结果集
        List<Integer> list=new ArrayList<>(); 
        //初始化长度
        int length=queue.size();
        while(length>0){      
        //把结果加到集合中
        //这个结果是队列的头
        //记住是队列的头
        //并弹出头部
        //存入头部的值
        TreeNode mid = queue.poll();
        list.add(mid.val);
        //然后再往队列中加入值
        //判断是否有左右节点
        //有就加入
        if (mid.left != null)  
        {queue.offer(mid.left);}
        if (mid.right != null) 
        {queue.offer(mid.right);}
        length--;
    }
    //把新结果集加入最终结果集中
    result.add(list);
    }
    return result;
    }
}

题目二:226. 翻转二叉树

做题思路

本题采用递归解法,每次就是对左右节点进行交换,直接递归,比较简单

具体代码
class Solution {
    //递归方法解答
    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 tmp = root.left;
        root.left = root.right;
        root.right = tmp;
    
    }
}

题目三:101. 对称二叉树

做题思路

本题采用递归+后序遍历解法,只能用后序,左右子树同时比较,注意左右比较的节点,比如左节点的左节点与右节点的右节点比,注意物

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值