学习笔记:二叉搜索树的验证
生活随笔
收集整理的這篇文章主要介紹了
学习笔记:二叉搜索树的验证
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方法一(低效):
最開始想的辦法是,先寫 求二叉樹中最大值的函數,和一個求二叉樹中最小值的函數,然后調用這兩個函數 寫出 驗證二叉搜索樹的函數(因為要左邊小于右邊嘛),結果 時間復雜度特別大,老是超時
方法二:利用中序遍歷,得到二叉樹的表,再查表看看是否是遞增的,如果是,則該二叉樹是二叉搜索樹,否則不是
#include<stdio.h> #include<limits.h> #include<string> #include<iostream> #include<vector>using namespace std; //definition for a binary tree node struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int x): val(x),left(NULL),right(NULL) {}};class solution{ private:std::vector<int> vnums; public:bool isValidBST(TreeNode* root) {MOT(root);for(int ii=0;ii<vnums.size()-1;ii++){if(vnums[ii]>=vnums[ii+1])return false;}return true;}void MOT(TreeNode* root){if(root!=NULL){MOT(root->left);vnums.push_back(root->val);MOT(root->right);} }};int main(int argc,char* * argv) {struct TreeNode* root;root = (TreeNode*)malloc(sizeof(TreeNode));root->val = 4;root->left =(TreeNode*)malloc(sizeof(TreeNode)); root->right = (TreeNode*)malloc(sizeof(TreeNode));root->left->val =2; root->right->val = 6;root->left->left =(TreeNode*)malloc(sizeof(TreeNode)); root->left->right = (TreeNode*)malloc(sizeof(TreeNode));root->left->left ->val =1; root->left->right->val = 3;root->left->left->left=NULL; root->left->right->left=NULL;root->left->left->right=NULL; root->left->right->right=NULL;root->right->left =(TreeNode*)malloc(sizeof(TreeNode)); root->right->right = (TreeNode*)malloc(sizeof(TreeNode));root->right->left ->val =5; root->right->right->val = 7;root->right->left->left=NULL; root->right->right->left=NULL;root->right->left->right=NULL; root->right->right->right=NULL;solution s1;s1.isValidBST(root);return 0; }總結
以上是生活随笔為你收集整理的学习笔记:二叉搜索树的验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记:linuxsocket通信基础
- 下一篇: 学习笔记:验证对称二叉树