判断一棵二叉树,是否是搜索二叉树
来源:互联网 发布:怀化学院教务网络管理 编辑:程序博客网 时间:2024/06/03 19:45
思路1 左子树得节点都比父节点小,右子树节点都比父节点大
bool isValidBST(TreeNode *root) { return checkValid(root,INT_MIN,INT_MAX); } bool checkValid(TreeNode* root,int low,int high){ if(root==NULL) return true; if(root->val<=low||root->val>=high) return false; return checkValid(root->left,low,root->val)&&checkValid(root->right,root->val,high); }
思路2 : 用中序遍历,
递归: 用一个指针保留前一个结点的值
TreeNode* pre=NULL; bool isBST=true;public: bool isValidBST(TreeNode *root) { Inorder(root); return isBST; } void Inorder(TreeNode* root){ if(root==NULL) return; Inorder(root->left); if(pre&&pre->val >= root->val) isBST = false; pre=root; Inorder(root->right); }
中序遍历
非递归
bool isValidBST(TreeNode *root) { if(root==NULL) return true; TreeNode* pre=NULL; stack<TreeNode*> treeStack; while(!treeStack.empty()||root!=NULL){ while(root){ treeStack.push(root); root=root->left; } if(!treeStack.empty()){ root=treeStack.top(); treeStack.pop(); if(pre&&pre->val >= root->val) return false; pre=root; root=root->right; } } return true; }
阅读全文
0 0
- 判断一棵二叉树,是否是搜索二叉树
- 【BST】判断一棵二叉树是否是搜索二叉树
- 判定一棵二叉树是否是二叉搜索树
- 判定一棵二叉树是否是二叉搜索树
- 判定一棵二叉树是否是二叉搜索树
- 判定一棵二叉树是否是二叉搜索树
- 判定一棵二叉树是否是二叉搜索树
- 判定一棵二叉树是否是二叉搜索树
- 判断一棵二叉树是否是完全二叉树
- 判断一棵二叉树是否是完全二叉树
- 判断一棵二叉树是否是平衡二叉树
- 判断一棵树是否是二叉搜索树
- 判断是否是搜索二叉树
- 判断二叉树是否是二叉搜索树
- 判断二叉搜索树是否是平衡二叉树
- 判断二叉树是否是二叉搜索树
- [互联网面试笔试汇总C/C++-14] 判断一棵二叉树是否是二叉搜索树-微策略
- 判断一颗二叉树是否是完全二叉树
- 摄像头简介
- 10.使用autotools自动生成Makefile
- Docker入门系列(一):目标和安排
- git操作
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 判断一棵二叉树,是否是搜索二叉树
- HDU 4814 Golden Radio Base(2013 ACM/ICPC 长春赛区现场赛)
- 【SQL Server学习笔记】22:集合运算/多集运算(含ALL替代方案)
- 【项目实战】---SVN遇到问题---Error:Unable to connect to a repository at URL'……'
- char [] 和char * 之间有什么区别?
- sublime学习笔记(1).解决中文输入问题
- 【LeetCode】C# 63、Unique Paths II
- leetcode3. Longest Substring Without Repeating Characters
- 富人永远在坚持的5个铁律!