每日一题day5:[LeetCode:(二叉树专题):剑指Offer 55 - II、07、55 - I、28、27、965]

2023-11-20 13:32

本文主要是介绍每日一题day5:[LeetCode:(二叉树专题):剑指Offer 55 - II、07、55 - I、28、27、965],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

每日一题day5:LeetCode

剑指 Offer 55 - II. 平衡二叉树

剑指 Offer 07. 重建二叉树

剑指 Offer 55 - I. 二叉树的深度

剑指 Offer 28. 对称的二叉树

剑指 Offer 27. 二叉树的镜像

965. 单值二叉树


1、剑指 Offer 55 - II. 平衡二叉树

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:int GetHigh(TreeNode* root){if(root == nullptr) return 0;int l = GetHigh(root -> left);int r = GetHigh(root -> right);return max(l, r) + 1;}bool isBalanced(TreeNode* root) {if(root == nullptr) return true;int l = GetHigh(root -> left);int r = GetHigh(root -> right);return abs(l - r) <= 1 && isBalanced(root -> left) && isBalanced(root -> right);}
};

2、剑指 Offer 07. 重建二叉树

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:unordered_map<int, int> pa;TreeNode* slove(int pos, int s, int e, vector<int>& preorder, vector<int>& inorder){if(s > e) return nullptr;TreeNode* root = new TreeNode(preorder[pos]);int nxt_pos = pa[preorder[pos]];root -> left = slove(pos + 1, s, nxt_pos - 1, preorder, inorder);root -> right = slove(pos + nxt_pos - s + 1, nxt_pos + 1, e, preorder, inorder);return root;}TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {int size = preorder.size();for(int i = 0; i < size; i++) pa[inorder[i]] = i;return slove(0, 0, size - 1, preorder, inorder);}
};

3、剑指 Offer 55 - I. 二叉树的深度

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:int GetHigh(TreeNode* root){if(root == nullptr) return 0;int l = GetHigh(root -> left);int r = GetHigh(root -> right);return max(l, r) + 1;}int maxDepth(TreeNode* root) {if(root == nullptr) return 0;int l = GetHigh(root -> left);int r = GetHigh(root -> right);return max(l, r) + 1;}
};

4、剑指 Offer 28. 对称的二叉树

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:bool slove(TreeNode* l, TreeNode* r){if(l == nullptr && r == nullptr) return true;else if(l != nullptr && r == nullptr) return false;else if(l == nullptr && r != nullptr) return false;else{if(l -> val != r -> val) return false;return slove(l -> left, r -> right) && slove(l -> right, r -> left);}}bool isSymmetric(TreeNode* root) {if(root == nullptr) return true;return slove(root -> left, root -> right);}
};

5、剑指 Offer 27. 二叉树的镜像

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:void slove(TreeNode* root){if(root == nullptr) return;swap(root -> left, root -> right);slove(root -> left);slove(root -> right);}TreeNode* mirrorTree(TreeNode* root) {slove(root);return root;}
};

6、965. 单值二叉树

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:bool slove(TreeNode* fa, TreeNode* son){if(fa != nullptr && son == nullptr) return true;if(fa == nullptr && son == nullptr) return true;return slove(son, son -> left) && slove(son, son -> right) && (fa -> val == son -> val);}bool isUnivalTree(TreeNode* root) {if(root == nullptr) return true;return slove(root, root -> left) && slove(root, root -> right);}
};

2021/3/14完。

这篇关于每日一题day5:[LeetCode:(二叉树专题):剑指Offer 55 - II、07、55 - I、28、27、965]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/394965

相关文章

哈希leetcode-1

目录 1前言 2.例题  2.1两数之和 2.2判断是否互为字符重排 2.3存在重复元素1 2.4存在重复元素2 2.5字母异位词分组 1前言 哈希表主要是适合于快速查找某个元素(O(1)) 当我们要频繁的查找某个元素,第一哈希表O(1),第二,二分O(log n) 一般可以分为语言自带的容器哈希和用数组模拟的简易哈希。 最简单的比如数组模拟字符存储,只要开26个c

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

leetcode-24Swap Nodes in Pairs

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode swapPairs(L

leetcode-23Merge k Sorted Lists

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode mergeKLists

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

从0到1,AI我来了- (7)AI应用-ComfyUI-II(进阶)

上篇comfyUI 入门 ,了解了TA是个啥,这篇,我们通过ComfyUI 及其相关Lora 模型,生成一些更惊艳的图片。这篇主要了解这些内容:         1、哪里获取模型?         2、实践如何画一个美女?         3、附录:               1)相关SD(稳定扩散模型的组成部分)               2)模型放置目录(重要)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr