【题目】:
如下的Node类是标准的二叉树节点结构:
1 public class Node{ 2 public int value; 3 public Node left; 4 public Node right; 5 6 public Node(int data){ 7 this.value = data; 8 } 9 }
再定义Query类如下:
1 public class Query{ 2 public Node o1; 3 public Node o2; 4 5 public Query(Node o1, Node o2){ 6 this.o1 = o1; 7 this.o2 = o2; 8 } 9 }
一个Query类的实例表示一条查询语句,表示想要查询o1节点和o2节点的最近公共祖先节点
给定一棵二叉树的头节点head,并给定所有的查询语句,即一个Query类型的数组Query[] ques,请返回Node类型的数组Node[] ans,ans[i]代表ques[i]这条查询的答案,即ques[i].o1和ques[i].o2的最近公共祖先
【要求】:
如果二叉树的节点数为N,查询语句的条数为M,整个处理过程的时间复杂度要求达到O(N+M)
题目来源:左程云老师《程序员代码面试指南》
原文地址:https://www.cnblogs.com/latup/p/10204914.html
时间: 2024-11-06 16:20:02