yirufeng

738字约2分钟

2024-05-12

dfs和bfs的区别

面试题:判断是否为完美二叉树

面试题:如何判断一棵树是否为BST?

二叉搜索树的定义:空树或者具有如下性质的二叉树,若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树

远程面试使用的是牛客网,线上IDE只有一个默认的 main 函数,然而面试官在给出题目的时候不像平时做题时给出一个要求的函数签名,所以我们要先写出树的数据结构,然后写函数(面试官有说入参是一个根节点),最后测试的时候要自己 new 一棵二叉树,虽然没花多少时间,但是第一次面试还是不太习惯Orz。

面试题:求树的最大高度

面试题:判断二叉树是否对称(迭代)

面试题:给定一个二叉树,从根节点出发,按照前序遍历的顺序打印每个节点,最后回到根节点,比如

面试题:根据这个打印结果,把树给建立起来

面试题:二叉树中任意 3 个节点的最近公共祖先

面试题:AVL树或者红黑树 插入和查找的细节

面试题:红黑树与AVL差别

面试题:二叉树从根到叶子的路径总和是否存在指定的值

算法题: 给定一个仅包含数字 0−9 的二叉树,每一条从根节点到叶子节点的路径都可以 用一个数字表示。

例如根节点到叶子节点的一条路径是 1→2→3 ,那么这条路径就用 123 来代替。

找出根节点到叶子节点的所有路径表示的数字之和

问了大概 25 分钟才做的算法题,做完了递归让非递归做一遍

Z 字型打印二叉树

给定一个值,找出二叉树中从根节点到叶子节点的路径和等于那个值的路径

二叉树的右视图。

算法:用栈先序遍历二叉树

二叉树的左视图打印

面试题:红黑树/旋转

第一题:求二叉树的最长路径,路径指任意结点到结点之间的最短距离

求二叉树是否存在和为 N 的路径

直接递归就行了,后来又要求路径不一定要到叶结点,稍微改一改也就行了……

复杂度 一开始直接就说 log(N),当场去世……

面试官让我再考虑一下,发现是 O(N),因为最糟的情况下每个结点都要访问一次

No Pains, No Gains