【6sense 面试真题】组织结构树 & Unival Tree —— 数据结构思维与层级递归的双重考验

在最近一次 6sense 技术面试 中,我们的一位学员遇到了两道经典却极具挑战性的结构化编程题。
这两题虽然形式不同,但考察的核心都是:递归结构的设计能力、数据层级关系的建模能力、以及代码的可读性与清晰思路


🧩 第一题:打印组织架构树

题目原文

Emps
------------------------------------------------
ID | Name    | Manager ID
1  | Eric    | NULL
2  | Jack    | 1
3  | Viral   | 2
4  | Michael | 2
5  | Nitesh  | 1
6  | George  | 4
7  | Ryan    | 2

Emp ==> { id: int, name: string, mid: int }

Write a function... which takes input as a list of Emp(s),
and prints out the org chart as follows:

输出示例:

Eric
|__ Jack
    |__ Viral
    |__ Michael
        |__ George
    |__ Ryan
|__ Nitesh

🧠 思路分析

这道题本质上是一个“层级关系解析”问题。
输入是一组扁平化的员工数据,需要构建出树状层级结构并递归打印。

候选人在 CSOAHelp 实时面试辅助系统 的引导下,首先梳理出了两步核心逻辑:

  1. 构建关系映射(建树)
    • Map<Integer, List<Emp>> 存储每个经理对应的下属列表;
    • 找出 Manager ID == NULL 的节点作为根节点(即最高领导 Eric)。
  2. 递归打印结构(DFS)
    • 每一层打印时根据层级加上缩进符号 "|__ "
    • 按层遍历下属,形成完整的组织架构树输出。

在答题过程中,CSOAHelp 导师特别提醒候选人注意输出格式一致性(如空格数量、换行格式),
并建议将“打印函数”独立封装以增强可读性。

最终,候选人输出的结果完全符合预期结构,递归逻辑清晰且易扩展。


🌳 第二题:Unival Tree(统一值子树计数)

题目原文

A unival tree is an n-ary tree in which all nodes have the same value.
This is a valid unival tree:
   1
  / \
 1   1
/ \
1  1 1 1

This is not:
   1
  / \
 1   2
 / \
1  1 2 1

This has 8 unival subtrees:
      1
     / \
    2   3
   / \ / \
  2  2 3  3
 / \ / \
5  5 4  4
# Part 1: Validate if a given tree is a unival tree
# Part 2: Count the number of unival subtrees

💡 思路与递归设计

这道题是 树结构递归判断与计数 的典型考点。
6sense 的面试官希望通过这题观察候选人能否在短时间内:

  • 递归地处理树节点关系;
  • 同时完成布尔判断与计数逻辑的整合;
  • 在算法正确性的前提下保持清晰代码结构。

CSOAHelp 的实时指导下,候选人采用了以下分步策略:

  1. Part 1 – 判断是否为 Unival Tree
    使用递归函数 isUnival(node),判断当前节点与左右子树是否值相同。
  2. Part 2 – 统计 Unival 子树数量
    递归返回两个结果:
    • 当前节点是否为 unival;
    • 当前子树中 unival 的数量。

导师建议在实现时定义辅助函数:

def helper(node):
    if node is None:
        return True, 0
    left_is_unival, left_count = helper(node.left)
    right_is_unival, right_count = helper(node.right)
    is_unival = left_is_unival and right_is_unival and \
                (not node.left or node.left.val == node.val) and \
                (not node.right or node.right.val == node.val)
    return is_unival, left_count + right_count + (1 if is_unival else 0)

这种写法将判断与计数统一在一个递归框架内,使逻辑简洁明了。


🧩 面试官反馈

6sense 的面试官对候选人的表现给予了高度评价:

“Your recursion structure was clean, and your explanation was precise.”

“We’re impressed by how you reasoned through both hierarchical data and tree traversal.”

候选人不仅完成了题目,还清晰地阐述了时间复杂度(O(n))与空间复杂度(O(h)),
体现出良好的工程思维与表达能力。


🚀 CSOAHelp 实时辅助的优势

在这场面试中,候选人的最大突破来自于:

  • 能在 逻辑卡点时获得实时引导,迅速理清思路;
  • 学会将问题拆解为“建模 → 递归 → 计数”的结构化路径;
  • 面试前通过 CSOAHelp 的模拟系统反复练习树结构类问题。

导师指出,6sense、Databricks、Uber 等公司非常看重
候选人对 数据层级与递归遍历 的掌握能力,而非单纯的算法技巧。


📍 如果你也在准备 FAANG、6sense、或量化/数据平台类公司的面试,
别让自己陷在无方向的刷题中。
CSOAHelp 提供的 实时面试陪练与结构化辅导
能帮助你快速掌握思维路径与答题策略。

访问 👉 CSOAHelp.com
加入我们,用系统化的方法拿下你的下一场技术面试。

Leave a Reply

Your email address will not be published. Required fields are marked *