
二叉树
如果我来了6
这个作者很懒,什么都没留下…
展开
-
打家劫舍 III【leetcode 337】
解答动态规划(树形DP)打劫一个树的最大收益,是 robIncludeRoot 和 robExcludeRoot 中的较大者。即每个子树都有两个状态下的最优解:没打劫 root、和有打劫 root 下的最优解。有两个变量共同决定一个状态:1、代表不同子树的 root 节点、2、是否打劫了 root。没打劫根节点,则左右子树的根节点可打劫可不打劫:dp[0] = 左子树的两个状态的较大值 + 右子树的两个状态的较大值。打劫了根节点,则左右子树的根节点不能打劫:dp[1] = root.val.原创 2021-12-21 15:26:08 · 473 阅读 · 0 评论 -
翻转二叉树【leetcode 226】
解答#include <algorithm>using namespace std;/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode.原创 2021-12-18 11:23:54 · 798 阅读 · 0 评论 -
二叉树的最小深度【leetcode 111】
解答这道题的关键是搞清楚递归结束条件叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点当 root 节点左右孩子都为空时,返回 1当 root 节点左右孩子有一个为空时,返回不为空的孩子节点的深度当 root 节点左右孩子都不为空时,返回左右孩子较小深度的节点值#include <algorithm>using namespace std;class Solution {public: int minDepth(TreeNode* root) { .原创 2021-12-16 09:57:55 · 492 阅读 · 0 评论 -
二叉树的最大深度 【leetcode 104】
解答#include <algorithm>class Solution {public: int maxDepth(TreeNode* root) { if(root==nullptr) return 0; //递归终止条件 int maxDepthLeft = maxDepth(root->left); //计算左子树最大深度 int maxDepthRight = maxDepth(root->right); .原创 2021-12-16 09:18:18 · 568 阅读 · 0 评论