面试经典150题(62-64)

leetcode 150道题 计划花两个月时候刷完,今天(第三十天)完成了3道(62-64)150:

62.(226. 翻转二叉树)题目描述:

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

第一版(直接递归,把每一个节点当做一个新二叉树去对待)

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

63.(101. 对称二叉树)题目描述:

给你一个二叉树的根节点 root , 检查它是否轴对称。

第一版(还是递归,先把节点分为两个,左节点和右节点,当作两个新树,去比较左二叉树和右二叉树镜像翻过来时候相等)

class Solution {
   
    public boolean isSymmetric(TreeNode root) {
   
        if(root==null){
   
            return false;
        }
        TreeNode left=root.left;
        TreeNode right=root.right;
        return compareTree(left,right);
    }
    public boolean compareTree(TreeNode left,TreeNode right){
   
        if(left==null&&right==null){
   
            return true;
        }
        if(left!=null&&right!=null&&left.val==right.val){
   
           return compareTree(left.right,right.left)&&compareTree(left.left,right.right);
        }
        return false;
    }
}

64.(105. 从前序与中序遍历序列构造二叉树)题目描述:

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

第一版(经典题目,学数据结构时候应该都遇到过,但是我只是当时写过,学完后经常碰到但是没勇气和耐心再去写一遍。。今天不得不写)

class Solution {
   
    Map<Integer,Integer> map=new HashMap();
    public TreeNode buildTree(int[] preorder, int[] inorder) {
   
        for(int i=0;i<inorder.length;i++){
   
            map.put(inorder[i],i);
        }
        return buildSubTree(preorder,0,preorder.length-1,inorder,0,inorder.length-1);
    }
    public TreeNode buildSubTree(int[] preorder, int pLeft,int pRight,int[] inorder,int iLeft,int iRight) {
   
        if(pLeft>pRight||iLeft>iRight){
   
            return null;
        }
        if(pLeft==pRight){
   
            return new TreeNode(preorder[pLeft]);
        }
        
        TreeNode root=new TreeNode(preorder[pLeft]);
        int rootIndex=map.get(preorder[pLeft]);
        int count=rootIndex-iLeft;
        root.left=buildSubTree(preorder,pLeft+1,pLeft+count,inorder,iLeft,rootIndex-1);
        root.right=buildSubTree(preorder,pLeft+1+count,pRight,inorder,rootIndex+1,iRight);
        return root;
    }
}

今天有点发懒了。。差点不想打开电脑。。还好还好,今天真的最后一个我是看了一下讲解,然后自己就写了一版过了,就是在处理找中序的坐标时候,我没想到先把中序的用map保存一遍。。其他的和解题的递归一模一样,很有成就感!!!

第三十天了,不知道刷题对找工作有没有帮助。。但是也不知道干啥了,这几天工作活感觉要上强度了mmp,加油希望能早日跳槽吧!!!

相关推荐

  1. 面试经典150(62-64)

    2024-01-05 12:46:05       54 阅读
  2. 面试经典150(59-61)

    2024-01-05 12:46:05       52 阅读
  3. 面试经典150(67-71)

    2024-01-05 12:46:05       69 阅读
  4. 面试经典---68.文本左右对齐

    2024-01-05 12:46:05       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-05 12:46:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-05 12:46:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-05 12:46:05       82 阅读
  4. Python语言-面向对象

    2024-01-05 12:46:05       91 阅读

热门阅读

  1. 中间件:构建现代软件架构的桥梁

    2024-01-05 12:46:05       56 阅读
  2. merge发生冲突时 ☞ 撤销merge

    2024-01-05 12:46:05       61 阅读
  3. WiFi7: MLD寻址

    2024-01-05 12:46:05       67 阅读
  4. redis总结

    2024-01-05 12:46:05       59 阅读
  5. .NET C# 如何获取object对象的数据

    2024-01-05 12:46:05       55 阅读
  6. CSS中变量的作用

    2024-01-05 12:46:05       59 阅读
  7. Linux 服务器安全策略技巧:网络分段

    2024-01-05 12:46:05       50 阅读
  8. 路由的安装顺序

    2024-01-05 12:46:05       64 阅读
  9. Go语言中的乐观锁与悲观锁

    2024-01-05 12:46:05       70 阅读