广州做家教的网站,有口碑的郑州网站建设,全屏响应式网站模板,网站运营团队建设给你一个二叉树的根节点 root #xff0c;判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下#xff1a;
节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。
思路一#xff1a;递归 …给你一个二叉树的根节点 root 判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下
节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。
思路一递归
void inOrder(struct TreeNode* root,int arr[],int *len){if(root ! NULL){inOrder(root-left,arr,len);arr[(*len)]root-val;inOrder(root-right,arr,len);}
}
bool isValidBST(struct TreeNode* root){int arr[10000];int len0;inOrder(root,arr,len);for(int i0;ilen-1;i){if(arr[i]arr[i1]){return false;}}return true;
}分析
本题要判断二叉树是否为二叉搜索树可先判断左子树值是否小于根节点递归判断全部的左子树再向右子树递归将全部的数放到数组中若该位置值大于后一位数的值则返回false,反之返回true
总结
本题考察二叉树的相关应用对二叉搜索树定义理解后使用递归将每个数值记录再判断即可得到答案。