2021-09-06

二叉树的前序遍历
class Solution {
    List<Integer> x=new LinkedList<>();
    public List<Integer> preorderTraversal(TreeNode root) {
        if(root==null) return x;
        x.add(root.val);
        preorderTraversal(root.left);
        preorderTraversal(root.right);
        return x;
    }
}

二叉搜索树中的搜索
class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if(root==null) return null;
        if(root.val>val)
        {
            return searchBST(root.left,val);
        }
        else if(root.val<val)
        {
            return searchBST(root.right,val);
        }
        else
        {
            return root;
        }
    }
}

二叉搜索树中的插入
class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
        if(root==null) return new TreeNode(val);
        if(root.val<val)
        {
            root.right=insertIntoBST(root.right,val);
        }
        else
        {
            root.left=insertIntoBST(root.left,val);
        }
        return root;
    }
}

BiNode
class Solution {
    TreeNode prenode=null;
    int k=0;
    TreeNode t;
    public TreeNode convertBiNode(TreeNode root) {
        if(root==null) return null;
        if(root.left==null&&root.right==null) return root;
        cal(root);
        return t;
    }
    public TreeNode cal(TreeNode root)
    {
        if(root==null) return null;
        cal(root.left);
        TreeNode x=new TreeNode(root.val);
        if(prenode!=null)
        {
            prenode.right=x;
            k++;
            if(k==1)
            {
                t=prenode;
            }
        }
        prenode=x;
        cal(root.right);
        return root;
    }
}

层数最深叶子节点的和
class Solution {
    public int deepestLeavesSum(TreeNode root) {
        List<List<Integer>> sum=level(root);
        for(List<Integer> x : sum)
        {
            int m=0;
            for(int i : x)
            {
                m=m+i;
            }
            return m;
        }
        return 0;
    }
    public List<List<Integer>> level(TreeNode root)
    {
        List<List<Integer>> sum=new LinkedList<>();
        if(root==null) return sum;
        Queue<TreeNode> queue=new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty())
        {
            List<Integer> x=new LinkedList<>();
            TreeNode temp;
            int t=queue.size();
            for(int i=0;i<t;i++)
            {
                temp=queue.poll();
                x.add(temp.val);
                if(temp.left!=null) queue.add(temp.left);
                if(temp.right!=null) queue.add(temp.right);
            }
            sum.add(x);
        }
        Collections.reverse(sum);
        return sum;
    }
}

最大二叉树
class Solution {
    public TreeNode insertIntoMaxTree(TreeNode root, int val) {
        if(root==null)
        {
           return new TreeNode(val);
        }
        if(root.val<val)
        {
            TreeNode t=new TreeNode(val);
            t.left=root;
            return t;
        }
        else
        {
            root.right=insertIntoMaxTree(root.right,val);
            return root;
        }
    }
}

二叉搜索树第k小的元素
class Solution {
    List<Integer> sum=new LinkedList<>();
    public int kthSmallest(TreeNode root, int k) {
        cal(root);
        return sum.get(k-1);
    }
    public void cal(TreeNode root)
    {
        if(root==null) return;
        cal(root.left);
        sum.add(root.val);
        cal(root.right);
    }
}

回文链表
class Solution {
    public boolean isPalindrome(ListNode head) {
        List<Integer> m=new LinkedList<>();
        List<Integer> n=new LinkedList<>();
        while(head.next!=null)
        {
            m.add(head.val);
            head=head.next;
        }
        m.add(head.val);
        n.addAll(m);
        Collections.reverse(n);
        return m.equals(n);
    }
}

删除链表中的节点
class Solution {
    public void deleteNode(ListNode node) {
        node.val=node.next.val;
        node.next=node.next.next;
        
    }
}

四的幂
class Solution {
    public boolean isPowerOfFour(int n) {
        int x=0;
        while(Math.pow(4,x)<=n)
        {
            if(Math.pow(4,x)==n)
            {
                return true;
            }
            x++;
        }
        return false;
    }
}
反转字符串
class Solution {
    public void reverseString(char[] s) {
        char temp;
        for (int i=0;i<s.length/2;i++){
            temp=s[i];
            s[i] = s[s.length-1-i];
            s[s.length-1-i] = temp;
        }
    }
}

将有序数组转化成二叉搜索树
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
       return cal(nums,0,nums.length-1);
    }
    public TreeNode cal(int[] nums,int l,int r)
    {
       if(r<l) return null;
       int mid = l+((r-l)>>1);  //求中点不要用 int mid = (l + r)/2,有溢出风险,稳妥的方法是 int mid = l + (r-l)/2
       //mid=(left+right)>>1的含义右移运算符>>,运算结果正好能对应一个整数的二分之一值,这就正好能代替数学上的除2运算,但是比除2运算要快。
mid=(left+right)>>1相当于mid=(left+right)/2
       TreeNode root=new TreeNode(nums[mid]);
       root.left=cal(nums,l,mid-1);
       root.right=cal(nums,mid+1,r);
       return root;
    }
}

动态规划
509.斐波那契数
70.爬楼梯
746.使用最小花费爬楼梯
62.不同路径
63.不同路径II
343.整数拆分
96.不同的二叉搜索树

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用python中的pymsql完成如下:表结构与数据创建 1. 建立 `users` 表和 `orders` 表。 `users` 表有用户ID、用户名、年龄字段,(id,name,age) `orders` 表有订单ID、订单日期、订单金额,用户id字段。(id,order_date,amount,user_id) 2 两表的id作为主键,`orders` 表用户id为users的外键 3 插入数据 `users` (1, '张三', 18), (2, '李四', 20), (3, '王五', 22), (4, '赵六', 25), (5, '钱七', 28); `orders` (1, '2021-09-01', 500, 1), (2, '2021-09-02', 1000, 2), (3, '2021-09-03', 600, 3), (4, '2021-09-04', 800, 4), (5, '2021-09-05', 1500, 5), (6, '2021-09-06', 1200, 3), (7, '2021-09-07', 2000, 1), (8, '2021-09-08', 300, 2), (9, '2021-09-09', 700, 5), (10, '2021-09-10', 900, 4); 查询语句 1. 查询订单总金额 2. 查询所有用户的平均年龄,并将结果四舍五入保留两位小数。 3. 查询订单总数最多的用户的姓名和订单总数。 4. 查询所有不重复的年龄。 5. 查询订单日期在2021年9月1日至9月4日之间的订单总金额。 6. 查询年龄不大于25岁的用户的订单数量,并按照降序排序。 7. 查询订单总金额排名前3的用户的姓名和订单总金额。 8. 查询订单总金额最大的用户的姓名和订单总金额。 9. 查询订单总金额最小的用户的姓名和订单总金额。 10. 查询所有名字中含有“李”的用户,按照名字升序排序。 11. 查询所有年龄大于20岁的用户,按照年龄降序排序,并只显示前5条记录。 12. 查询每个用户的订单数量和订单总金额,并按照总金额降序排序。
06-03

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值