题目概述
解题思路
这道题的思路并不复杂:我们需要先判断每个节点作为根节点时,对应的子树是否是二叉搜索树;对于那些是BST的子树,计算这个节点拥有的节点个数。
这道题的一个关键在于:千万不要忘记,二叉树中的节点不一定非要有两个节点,我之前把这个定义弄错了,所以debug了很久_(:з」∠)_
这道题的另一个关键是:要让树先去遍历左右节点,而不是先判断条件,这有可能导致递归遍历过早地结束,没有取得最大值。
方法性能
示例代码
我的版本(函数返回值是vector<int>):
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<map>
using namespace std;
class Tree
{
public:
int val;
Tree *L, *R;
};
vector<int> depth(Tree* root, int &res)
{
int min_val = root->val,
max_val = root->val,
nums = 1;