lc.110 平衡二叉树
描述 平衡二叉树的性质:每个节点的左右两个子树的高度差的绝对值不超过 1; 题解 以下两种方法均基于以下性质推出:当前树的深度 等于 左子树的深度 与 右子树的深度 中的 最大值 +1 。 方法一:后序遍历 + 剪枝 (从底至顶) 思路是对二叉树做后序遍历,从底至顶返回子树深度,若判定某子树不是平衡树则 “剪枝” ,直接向上返回。 class Solution { publi...
描述 平衡二叉树的性质:每个节点的左右两个子树的高度差的绝对值不超过 1; 题解 以下两种方法均基于以下性质推出:当前树的深度 等于 左子树的深度 与 右子树的深度 中的 最大值 +1 。 方法一:后序遍历 + 剪枝 (从底至顶) 思路是对二叉树做后序遍历,从底至顶返回子树深度,若判定某子树不是平衡树则 “剪枝” ,直接向上返回。 class Solution { publi...
这题一定要背下来、在leetcode上多写几遍; 还有由中、前序序列构造二叉树的,也要写! class Solution { public: TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) { if (inorder.size() ** ...
int maxDepth(TreeNode* root) { if (root == nullptr) return 0;//空结点,返回0 return max(maxDepth(root->left), maxDepth(root->right)) + 1;//注意max函数要包含<algorithm>头文件 } 动画演...
在层序遍历模板的基础上加一个depth即可 求二叉树的最小深度 相对于 104.二叉树的最大深度 ,本题还也可以使用层序遍历的模板来解决,思路是一样的。 需要注意的是,只有当左右孩子都为空的时候,才说明遍历的最低点了。如果其中一个孩子为空则不是最低点 class Solution { public: int minDepth(TreeNode* root) { ...
镜像对称: 该问题可以转化为:两个树在什么情况下互为镜像? 如果同时满足下面的条件,两个树互为镜像: 它们的两个根结点具有相同的值; 每个树的右子树都与另一个树的左子树镜像对称; 解法 1)递归法 我们可以实现这样一个 递归 函数,通过 同步移动 两个指针的方法来遍历这棵树,p 指针和 q 指针一开始都指向这棵树的根,随后 p 右移时,q 左移,p 左移时,q 右移...
GPT找出的问题 动态数组问题:struct stack中的data[10]是一个固定大小的数组,如果你想动态调整数组大小,可以使用std::vector<int>替代。这样可以灵活处理栈的大小变化。 merge逻辑问题:vec2[p]=vec[j]应为比较操作,而不是赋值操作,所以应改为vec2[p]==vec[j]。 ...
(受归并排序与树遍历的启发) 归并排序的代码见归并排序 /*求长子兄弟树的高度的算法*/ int Height(EBNode * t) // 求 t 的高度 { if (t == NULL) return 0; // 空树的高度为 0 int maxsh = 0; EBNode * p = t -> eson; // p 指向 t 结点的长子 ...
(1) 先学会看答案 如果一道题超过十分钟还是没想法,果断看答案;但是不是抄答案,而是学思路,然后用自己的代码实现出来 (2)反复练习 对于刷完的题一定要反复练习,多写几遍。可以在笔记里把题目分为以下几类: <1>必背 大约20~30道都是各类型题目的典型模板题基本需要刷十几遍做到迷迷糊糊半昏迷状态也能熟练默写的肌肉记忆状态 <2>核心 大约100~150道...
Header: <string> Function The getline() function extracts characters from the input stream and appends it to the string object until the delimiting character is encountered. Syntax string s...
如果用IDE写代码的时候,本来应该有提示(即可以用tab打出来)的变量/对象等,如果没有提示了,一定要当心,基本上是出错了. ```java public LinkedListDeque() { private Node sentinel=new Node(null,10,null); … } public void addFirst(T item) { ...