二叉树的算法代码,一篇文章全搞定!

作者: IOExceptioner

来自:http://www.jianshu.com/p/0190985635eb

这是二叉树相关题目的总结,是用Java实现的。如果改成C++或者C语言,也仅仅需要改动很少的地方。

先上二叉树的数据结构:

二叉树的题目普遍可以用递归迭代的方式来解

1. 求二叉树的最大深度

2. 求二叉树的最小深度

3. 求二叉树中节点的个数

4. 求二叉树中叶子节点的个数

5. 求二叉树中第k层节点的个数

6. 判断二叉树是否是平衡二叉树

7.判断二叉树是否是完全二叉树

8. 两个二叉树是否完全相同

9. 两个二叉树是否互为镜像

10. 翻转二叉树or镜像二叉树

11. 求两个二叉树的最低公共祖先节点

12. 二叉树的前序遍历

迭代解法

递归解法

13. 二叉树的中序遍历

14.二叉树的后序遍历

15.前序遍历和后序遍历构造二叉树

16.在二叉树中插入节点

17.输入一个二叉树和一个整数,打印出二叉树中节点值的和等于输入整数所有的路径

18.二叉树的搜索区间

给定两个值 k1 和 k2(k1

19.二叉树的层次遍历

20.二叉树内两个节点的最长距离

二叉树中两个节点的最长距离可能有三种情况:

1.左子树的最大深度+右子树的最大深度为二叉树的最长距离

2.左子树中的最长距离即为二叉树的最长距离

3.右子树种的最长距离即为二叉树的最长距离

因此,递归求解即可

21.不同的二叉树

给出 n,问由 1…n 为节点组成的不同的二叉查找树有多少种?

22.判断二叉树是否是合法的二叉查找树(BST)

一棵BST定义为:

节点的左子树中的值要严格小于该节点的值。

节点的右子树中的值要严格大于该节点的值。

左右子树也必须是二叉查找树。

一个节点的树也是二叉查找树。

如果能深刻的理解这些题的解法思路,在考试中的二叉树编程题目就应该没有什么问题啦。

●编号685,输入编号直达本文

●输入m获取文章目录

推荐↓↓↓

算法与数据结构

更多推荐《18个技术类公众微信》

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181008B0EVC300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券