https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/description/
初始代码
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (root.val == p.val || root.val == q.val) return root;//列出特殊情况可以省很多时间
String[] s = {"",""};
search(root,p,q,"",s);
String route1 = s[0];
String route2 = s[1];
TreeNode node = root;
char[] c1 = route1.toCharArray();
char[] c2 = route2.toCharArray();
int len=c1.length<c2.length?c1.length:c2.length;
for(int i=0;i<len;i++)
{
if(c1[i]==c2[i])
{
if(c1[i]=='1') node=node.left;
else if(c1[i]=='0') node=node.right;
}
else if (c1[i]!=c2[i]) break;
}
return node;
}
private void search(TreeNode root,TreeNode node1,TreeNode node2,String x,String[] s)
{
if(root==null) return ;
if(node1.val==root.val) s[0] = x ;
if(node2.val==root.val) s[1] = x ;
search(root.left,node1,node2,x+"1",s);
search(root.right,node1,node2,x+"0",s);
return;
}
}
优化方向
1.迭代产生大量字符串造成空间问题
2.慢