简单热门二叉树算法题目简述

二叉树的题目通常都是通过递归的方式来解决。
https://leetcode.com/explore/interview/card/top-interview-questions-easy/94/trees

题目1: 求二叉树的高度

解法

左右子树的深度较大的那一个+1

题目2: 验证一个树是不是合法的搜索二叉树

解法

递归求子树的是否合法,且返回子树中的最大最小值。
如果左右子树都合法,且左子树的最大值<当前节点值<右子树的最小值,则当前节点的树合法,且最小值为左子树的最小值,最大值为右子树的最大值。

题目3: 判断一棵树是否对称

解法

判断两棵树是否对称可以递归:一棵树的左子树与另一棵树的右子树对比。
判断一棵树是否对称,只要当作是两棵树,判断这棵树与他本身是否对称即可。

题目4: 按层输出二叉树

解法

广度优先遍历。用一个队列,首先把根结点放入,然后进入循环:从队列中取出节点访问,并将其左右子树插入队尾。
因为这里要分层,所以需要感知什么时候一层遍历结束,只需要将根结点放入队列时,再插入一个 特殊标志,比如null。每当从队列中取到null时,代表一层结束,再将其插入队尾。

题目5: 将一个有序数组转为平衡二叉搜索树

解法

将中间的数拿出来做树根,左右两部分分别作为两个子树递归即可。

你可能感兴趣的:(简单热门二叉树算法题目简述)