前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >挑战数据结构和算法面试题——二叉搜索树的后序遍历

挑战数据结构和算法面试题——二叉搜索树的后序遍历

作者头像
felixzhao
发布2018-04-17 18:09:00
6700
发布2018-04-17 18:09:00
举报
文章被收录于专栏:null的专栏null的专栏

题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。

这里写图片描述
这里写图片描述

分析:

根据二叉查找树的定义,二叉查找树或者是一棵空二叉树,或者是具有一下特性的二叉树:

  • 若它的左子树不为空,则左子树上的所有结点的值均小于根节点的值;
  • 若它的右子树不为空,则右子树上的所有结点的值均小于根节点的值;
  • 它的左右子树又分别是二叉查找树。

结合二叉树的后序遍历,则初始序列的最后一位为树的根节点。

方法:

代码语言:javascript
复制
bool judge_is_search_tree(int *a, int start, int end) {
  if (start == end) return true;
  if (start > end) return false;

  int root = a[end - 1];
  int i = start;
  while (i < end-1 && a[i] < root) i++;
  int pos = i;
  while (i < end-1) {
    if (a[i] < root) return false;
    i++;
  }

  bool left = judge_is_search_tree(a, 0, pos);
  bool right = judge_is_search_tree(a, pos, end-1);

  return left&&right;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年04月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分析:
  • 方法:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档