力扣-数据结构-11【算法学习day.82】

发布于:2025-02-11 ⋅ 阅读:(66) ⋅ 点赞:(0)

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.单值二叉树

题目链接:965. 单值二叉树 - 力扣(LeetCode)

题面:

代码:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    Boolean ans = true;
    int flag = 0;
    public boolean isUnivalTree(TreeNode root) {
        flag = root.val;
        recursion(root);
        return ans;
    }
    public void recursion(TreeNode node){
        if(node==null||ans==false)return;
        if(node.val!=flag){
            ans = false;
            return;
        }
        recursion(node.left);
        recursion(node.right);
    }
}

2.翻转等价二叉树

题目链接: 951. 翻转等价二叉树 - 力扣(LeetCode)

题面:

思路:模拟题目中求是否是等价二叉树的过程 

代码: 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    Boolean ans = true;
    public boolean flipEquiv(TreeNode root1, TreeNode root2) {
        if((root1==null&&root2!=null)||(root1!=null&&root2==null))return false;
        recursion(root1,root2);
        return ans;
    }
    public void recursion(TreeNode node1,TreeNode node2){
        if(node1==null||ans==false)return;
        if(node1.val!=node2.val){
            ans = false;
            return;
        }
        if(node1.left!=null&&node1.right!=null){
            if(node2.left==null||node2.right==null){
                ans = false;
                return;
            }
            if(node2.left.val==node1.right.val&&node2.right.val==node1.left.val){
                reverse(node1);
            }else if(node1.left.val!=node2.left.val||node1.right.val!=node2.right.val){
                ans = false;
                return;  
            }
            
        }else if(node1.left!=null){
            if((node2.left!=null&&node2.right!=null)||(node2.left==null&&node2.right==null)){
                ans = false;
                return;
            }
            int k = node1.left.val;
            if(node2.left!=null){
                if(k!=node2.left.val){
                    ans = false;
                    return;
                }
            }else{
                int r2 = node2.right.val;
                if(k==r2){
                    reverse(node1);
                }else{
                    ans = false;
                    return;
                }
            }
        }else if(node1.right!=null){
            if((node2.left!=null&&node2.right!=null)||(node2.left==null&&node2.right==null)){
                ans = false;
                return;
            }
            int k = node1.right.val;
            if(node2.right!=null){
                if(k!=node2.right.val){
                    ans = false;
                    return;
                }
            }else{
                int r2 = node2.left.val;
                if(k==r2){
                    reverse(node1);
                }else{
                    ans = false;
                    return;
                }
            }
        }else{
            if(node2.left!=null||node2.right!=null){
                ans = false;
                return;
            }
        }
        if(node1.left!=null){
         recursion(node1.left,node2.left);   
        }
        if(node1.right!=null){
         recursion(node1.right,node2.right);
        }
    }
    public void reverse(TreeNode node){
        TreeNode left = node.left;
        TreeNode right = node.right;
        node.left = right;
        node.right = left;
    }
}

后言

上面是数据结构相关的习题,下一篇文章会将其他相关的习题。


网站公告

今日签到

点亮在社区的每一天
去签到