当前位置: 首页> 娱乐> 明星 > 台达电子东莞有限公司_网络技术人员_有什么平台可以发广告_市场推广方案

台达电子东莞有限公司_网络技术人员_有什么平台可以发广告_市场推广方案

时间:2025/7/14 19:16:05来源:https://blog.csdn.net/qq_64076540/article/details/142679100 浏览次数:0次
台达电子东莞有限公司_网络技术人员_有什么平台可以发广告_市场推广方案

1 题目描述

题目链接:统计二叉树中好节点的数目
在这里插入图片描述

2 解答思路

第一步:挖掘出相同的子问题  (关系到具体函数头的设计)
第二步:只关心具体子问题做了什么  (关系到具体函数体怎么写,是一个宏观的过程)
第三步:找到递归的出口,防止死递归  (关系到如何跳出递归)

2.1 相同的子问题(函数头设计)

相同的子问题:统计二叉树中好节点的数目,就是统计左子树中好节点的数目 加上 右子树中好节点的数目

整体设计:
每次递归的时候需要传递二叉树和走到当前位置过程中遇到的最大的值

因此,函数头的设计如下:

int dfs(TreeNode* root, int mx){}

传入二叉树,和遇到的最大值,返回以当前节点为根节点的二叉树的好节点数目。

2.2 具体的子问题做了什么(函数体的实现)

根据之前的分析,具体的子问题做的事情:
1.统计左子树中好节点的数目
2.统计右子树中好节点的数目
3.返回以该节点为二叉树的好节点的数目(这里需要判断当前节点是不是好节点,同时这里也是递归的一个出口)

//返回二叉树中好节点的数目 = 左子树中好节点的数目 + 右子树中好节点的数目//1.如何判断是不是好节点//2.递归左右子树int dfs(TreeNode* root, int mx){if (root == nullptr)return 0;//判断是不是好节点  --> mx表示这一路下来,所经过节点的最大值int left = dfs(root->left, max(mx, root->val));int right = dfs(root->right, max(mx, root->val));//返回当前节点的好节点的个数return left + right + (mx <= root->val);}

3 总结

class Solution {
public:int goodNodes(TreeNode* root) {return dfs(root, INT_MIN);}//返回二叉树中好节点的数目 = 左子树中好节点的数目 + 右子树中好节点的数目//1.如何判断是不是好节点//2.递归左右子树int dfs(TreeNode* root, int mx){if (root == nullptr)return 0;//判断是不是好节点  --> mx表示这一路下来,所经过节点的最大值int left = dfs(root->left, max(mx, root->val));int right = dfs(root->right, max(mx, root->val));//返回当前节点的好节点的个数return left + right + (mx <= root->val);}
};

在这里插入图片描述

关键字:台达电子东莞有限公司_网络技术人员_有什么平台可以发广告_市场推广方案

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: