分享一道面试中遇到的二叉树算法题

129 阅读1分钟

直入主题

1.随机生成二叉树

编写一个方法,随机生成一颗刚好 n 个节点的二叉树,每个节点随机从大写英文字母 A-Z 中取一个值,要求每个节点的值不重复。

# 如传入 n = 10,生成如下二叉树
    S
     \
      L
     / \
    K   C
   / \   \
  M   B   D
 /   / \
F   H   E

2.打印二叉树

编写一个方法,按下面的格式打印二叉树。

# 如 1 中生成的二叉树可以按如下格式打印
S
|--
|-- L 
    |-- K
    |   |-- M
    |   |   |-- F
    |   |   |-- 
    |   |-- B
    |       |-- H
    |       |-- E
    |-- C
        |-- 
        |-- D

3.查询根节点到指定节点的路径

编写一个方法,给出二叉树中的任意一个节点,返回根节点到这个节点的路径。

# 如 1 中生成的二叉树,输入节点 H,返回如下路径
[S, L, K, B, H]

PS: 面的 Java 后端开发