算法面试题-----二叉树完整刷题总结

关于面试中你一定要会的二叉树算法题!!

这个阶段一直在进行刷题,现在总结一下二叉树的常见类型,觉得有用的朋友记得点个赞哈!让我知道自己的总结还是有帮助到一些人的,也为了让更多的人看到。整理不易,转载的话记得注明出处!

上一节链表总结:算法面试题-----链表完整刷题总结

一、二叉树的遍历

题目:输入一棵二叉树,进行前序,中序,后序遍历
解题:递归解决遍历的思想非常简单,但是我们在面试的时候可能会被要求使用非递归的方式,所以借用栈来进行非递归遍历是我们一定要学会的,特别是比较难的后序遍历。
解答:leetcode 144. Binary Tree Preorder Traversal(二叉树的前序遍历,递归法,非递归法)
解答:leetcode 94. Binary Tree Inorder Traversal (二叉树的中序遍历,递归法,非递归法)

二、二叉树的深度问题

题目:输入一颗二叉树,返回他的深度(包括最大深度,最小深度)
解题:可以通过DFS,BFS两种方式进行计算
【剑指offer】面试题55 二叉树的深度
leetcode 104. Maximum Depth of Binary Tree (求二叉树的最大深度,DFS,BFS)
leetcode 111. Minimum Depth of Binary Tree(求二叉树的最小深度,DFS,BFS)

三、二叉树的层序遍历以及打印问题

打印二叉树和二叉树的层序遍历
题目:输入一颗二叉树,按照从上到下的顺序打印,之字形打印,多行打印等等
解题:上面这些问题都是基于二叉树的层序遍历的,学会使用BFS方法非常灵活且高效。
【剑指offer】面试题32 从上到下打印二叉树
【剑指offer】面试题32(2) 把二叉树打印成多行
【剑指offer】面试题32(3) 按之字形顺序打印二叉树
解答:leetcode102 Binary Tree Level Order Traversal(二叉树的层序遍历)
解答:leetcode107 Binary Tree Level Order Traversal 2 (二叉树的层序遍历2)
扩展:解答:leetcode429 N-ary Tree Level Order Traversal(N叉树的层序遍历)

四、二叉树的镜像,对称问题

题目:判断一棵二叉树是对称的
解题:根据二叉树的镜像原理(节点的左右孩子互换)进行对称的判断。
【剑指offer】面试题27 二叉树的镜像
【剑指offer】面试题28 对称的二叉树

五、判断二叉树是不是平衡二叉树

题目:判断一棵二叉树是不是平衡二叉树
解题:根据平衡二叉树的定义:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树,通过求左右子树的深度来进行判断,但是要注意一定是从下到上的顺序,否则会重复计算多个节点。
【剑指offer】面试题55-2 平衡二叉树

六、二叉树的子结构/子树

题目:判定一棵树是另一棵树的子树或者子结构,要注意的是子树和子结构是不一样的!
解题:子结构:只要某区域内匹配即可。子树:从匹配点到叶子结点完全匹配才算是一个子树,通常我们使用递归来进行判断。
【剑指offer】面试题26 树的子结构
leetcode 572 Subtree of Another Tree (子树)

七、二叉树中和为某一值得路径

题目:给定一个数值,寻找二叉树中符合这个数值的路径
解题:典型的深度优先遍历类型的试题,我们通过结合前序遍历算法来解题,每次递归更新目标数值即可。
【剑指offer】面试题34 二叉树中和为某一值得路径

八、 二叉树的下一个节点

题目:给定一棵二叉树和其中一个节点,如何找出中序遍历序列的下一个节点
解题:根据中序遍历的特点,我们能知道,在树结构中的节点,求其下一个节点有3种情况,分别对三种情况进行讨论即可。
【剑指offer】 面试题8 二叉树的下一个节点

九、 二叉树搜索树(BST)的相关问题

题目:二叉搜索树常常因为其特殊的结构和树的遍历问题进行联系,还有经过中序遍历的BST和排序链表之间的微妙关系,以及BST中的第几个节点问题等等,总之解决BST问题要熟练掌握树的遍历,以及和其他数据结构之间的联系。
【剑指offer】面试题33 二叉搜索树的后序遍历序列
【剑指offer】面试题36 二叉搜索树与排序链表
【剑指offer】面试题54 二叉搜索树的第k个结点

你可能感兴趣的:(算法题)