一、判断给定二叉树是否是二叉排序树

(听起来很简单的一道题,可能由于我之前的递归等没有理解透彻所以今天花了我快两个小时,于是痛定思痛,好好学习递归算法)

(小bug)心累啊,(c++)引用的话传参数不能传常量。
总算是搞明白了一下递归
1、首先建立一个临时的叫last的结点,为了储存遍历的前一个
2、由于递归时没有全局变量让你玩,那么就得一个个需要变动的传引用,这样参能保证每一次的实时变动。
3、最开始地last赋值问题,利用一个count为其赋值杠杠的~~~
4、遍历时每次都要进行判断,看满不满足条件!
关于c++的二叉树等作业整理思路

遍历(程序整体+结束条件)

最后总结一下怎么写遍历的算法
写遍历算法的话
1、首先把每一步做什么的先后顺序理出来。
2、哪里需要递归写上递归函数即可!

3、结束条件!!

二、编写递归算法从大到小输出二叉排序树中所有关键字不小于x的数据元素,要求时间复杂度为O(log2n+m),其中n为二叉排序树中所含结点数,m为输出的元素个数。

哈哈果然!弄清楚原理第二题加上弄那些语法的bug,最后弄出来花了我二十分钟!(还是有点久)

其实这道题很好解决!已经是二叉排序树了,那么我们写一个后序遍历不就是从大到小遍历吗?然后判断是否大于,大于则输出,不大于则return(为了复杂度)

关于c++的二叉树等作业整理思路

首先遍历到最右边的点O(log2n),然后输出m次点的数值O(m),哈哈最后算法复杂度O(log2n+m)妥妥的!!


还有题过几天写~

相关文章:

  • 2021-11-07
  • 2022-01-07
  • 2021-09-03
  • 2021-07-26
  • 2022-12-23
  • 2022-12-23
  • 2021-12-02
猜你喜欢
  • 2021-12-10
  • 2021-08-12
  • 2022-01-15
  • 2021-11-19
  • 2021-09-19
  • 2021-08-07
  • 2021-07-17
相关资源
相似解决方案