企业信息公示系统 全国,seo快速排名软件app,营销型网站建设哪好,电商眼今日内容 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 110.平衡二叉树 - Easy
题目链接#xff1a;. - 力扣#xff08;LeetCode#xff09; 给定一个二叉树#xff0c;判断它是否是高度平衡的二叉树。 本题中#xff0c;一棵高度平衡二叉树定义为#xff1… 今日内容 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 110.平衡二叉树 - Easy
题目链接. - 力扣LeetCode 给定一个二叉树判断它是否是高度平衡的二叉树。 本题中一棵高度平衡二叉树定义为 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 思路递归法注意区分深度和高度
class Solution {
public:// 返回以该节点为根节点的二叉树的高度如果不是平衡二叉树了则返回-1int getHeight(TreeNode* node) {if (node NULL) {return 0;}int leftHeight getHeight(node-left);if (leftHeight -1) return -1;int rightHeight getHeight(node-right);if (rightHeight -1) return -1;return abs(leftHeight - rightHeight) 1 ? -1 : 1 max(leftHeight, rightHeight);}bool isBalanced(TreeNode* root) {return getHeight(root) -1 ? false : true;}
};257. 二叉树的所有路径 - Easy
题目链接力扣-257. 二叉树的所有路径 给你一个二叉树的根节点 root 按 任意顺序 返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 思路递归法其实实现的是回溯
class Solution {
private:void traversal(TreeNode* cur, vectorint path, vectorstring result) {path.push_back(cur-val); // 中中为什么写在这里因为最后一个节点也要加入到path中 // 这才到了叶子节点if (cur-left NULL cur-right NULL) {string sPath;for (int i 0; i path.size() - 1; i) {sPath to_string(path[i]);sPath -;}sPath to_string(path[path.size() - 1]);result.push_back(sPath);return;}if (cur-left) { // 左 traversal(cur-left, path, result);path.pop_back(); // 回溯}if (cur-right) { // 右traversal(cur-right, path, result);path.pop_back(); // 回溯}}public:vectorstring binaryTreePaths(TreeNode* root) {vectorstring result;vectorint path;if (root NULL) return result;traversal(root, path, result);return result;}
}; 404.左叶子之和 - Easy
题目链接力扣-404. 左叶子之和 给定二叉树的根节点 root 返回所有左叶子之和。 思路递归法
class Solution {
public:int sumOfLeftLeaves(TreeNode* root) {if (root NULL) return 0;if (root-left NULL root-right NULL) return 0;int leftValue sumOfLeftLeaves(root-left); // 左if (root-left !root-left-left !root-left-right) { // 左子树就是一个左叶子的情况leftValue root-left-val;}int rightValue sumOfLeftLeaves(root-right); // 右int sum leftValue rightValue; // 中return sum;}
};今日总结
第一题注意区分高度和深度第二题回溯搞得不是很明白