bool(TreeNode* root){ return pd(root, INT_MIN, INT_MAX); } boolpd(TreeNode*root, int low, int high){ if (root == NULL) return1; if (root->val > low && root->val <high) { return pd (root->left, low, root->val) && pd(root->right, root->val, high); } return0; }
2.统计某个树的结点数量:
1 2 3 4 5 6
intnum(TreeNode* root){ if (root == NULL) return0; int left = num(root->left); int right = num(root->right); return left + right + 1; }
3.实现:
1 2 3 4 5 6 7 8 9 10 11 12
intlargestBSTSubtree(TreeNode* root){ if (root == NULL) { return0; } if (bst(root)) { return num(root); } int left = largestBSTSubtree(root->left); int right = largestBSTSubtree(root->right); return max(left, right); }
近期评论