博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案
阅读量:138 次
发布时间:2019-02-27

本文共 890 字,大约阅读时间需要 2 分钟。

题解:

搜索二叉树满足以下性质:

1.非空左子树的所以键值小于其根节点的键值
2.非空右子树的所有键值大于其根节点的键值
3.左,右子树都是二叉搜索树
完全二叉树:
如果二叉树的深度为k,则除第k层外其余所有层节点的度都为2,且叶子节点从左到右依次存在
叶子节点高度差距不为1或0肯定不是完全二叉树
当左右叶子节点的值大于根节点,肯定不是搜索二叉树

代码:

/** * struct TreeNode { *	int val; *	struct TreeNode *left; *	struct TreeNode *right; * }; */class Solution {
public: /** * * @param root TreeNode类 the root * @return bool布尔型vector */ vector
judgeIt(TreeNode* root) {
// write code here dfs(root); vector
res; res.push_back(a); res.push_back(b); return res; } bool a=1,b=1; int pre=INT_MIN; int dfs(TreeNode* root) {
if(root==NULL)return 0; if(!a&&!b)return 0; int l=dfs(root->left); if(root->val
val; int r=dfs(root->right); if(!((l-r==0)||(l-r==1)))b=0; return max(l,r)+1; }};

转载地址:http://wbzb.baihongyu.com/

你可能感兴趣的文章