本题要求在层序遍历表示法的二叉树中找到两个节点间的最短路径长度(边数)。核心考察数组表示法 + 最近公共祖先(LCA)。
层序遍历序列中包含 null 占位符,因此可直接使用数组下标索引来刻画父子关系:
i 时,父节点索引为 (i - 1) // 2(整数除法)某公司用二叉树来管理服务,用两节点间的跳数来表示两微服务之间的关联关系;所以需要你写一段代码,在给定二叉树中,找到该树中两个指定节点间的最小跳数(边数)。
树采用层序遍历序列表示法表示,树的节点不重名,节点数量范围为 1≤n≤106,节点名称用字符串表示;frm 和 to 节点不为空;若两节点不可达或不存在,则返回 −1。
输入包含:
treeLevelOrder,使用逗号分隔节点值,空节点用 null 表示;frm 和 to。输出一个整数,表示从节点 frm 到节点 to 的最小跳数(边数)。
若两节点不可达或节点不存在,则输出 -1。
层序遍历序列表示法为按树的从上到下、从左到右的顺序依次输出节点。例如:
1,2,3,null,null,4,5,null,null,6
对应的树结构如下图:

输入
["3,5,1,6,2,0,8,null,null,7,4","5","1"]
输出
2
说明
从节点 5 到 3 再从 3 到 1 共 2 跳。

输入
["3,5,1,6,2,0,8,null,null,7,4","5","4"]
输出
2
说明
从 5 到 2,再从 2 到 4,共 2 跳。

输入
["1,2,3,4,5,6,7","2","10"]
输出
-1
说明
树中不存在节点 10。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册