这是我的第一篇博客,今年本科毕业(非计算机专业),从事了嵌入是软件开发的工作,驱动开发,总觉得自己要多学点什么,想把欠的东西补上来。
为什么突然想写博客,最近发现上班忙起来真的没时间自己学习,好不容易抽出零散时间学的东西隔段时间拿出书看看题目大脑一片空白,于是下定决心,把学习的过程记录下来,这就有了这篇博客,以及后续可能的许多许多.....
最近学习了二叉搜索树,于是开始想做浙大PTA题目,判断一棵树是否为二叉搜索树,这里先对二叉搜索树做一个解释
1.二叉搜索树其根节点的键值大于左子树所有节点键值,小于右子树所有节点键值
2. 左右子树又都是二叉搜索树
注意:我这里标注了所有节点,非常重要,不注意就会出错!
比如
解法一(错误)
设节点的定义如下:
typedef struct TNode* Position;
typedef Position BinTree;
struct TNode
{
ElementType Data;
BinTree Left;
BinTree Right;
};
对每一个节点递归比较其键值与其左子节点键值和右子节点键