首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

获取二叉树中两个节点的新近公共祖先

2013-07-16 
获取二叉树中两个节点的最近公共祖先//二叉树节点对象public class TreeNode{private TreeNode left nul

获取二叉树中两个节点的最近公共祖先
//二叉树节点对象public class TreeNode{ private TreeNode left = null; private TreeNode right = null; private int data = 0; public TreeNode getLeft(){ return left; } public TreeNode getRight(){ return right; } public int getData(){ return data; } //获取最近公共祖先 public static TreeNode getNearestCommonAncestor(TreeNode root, TreeNode p, TreeNode q){ if(root == null || p == null || q == null){ return null; }else{ if(contains(root.getLeft(), p)){ if(contains(root.getRight(), q)){ return root; }else{ return getNearestCommonAncestor(root.getLeft(), p, q); } }else{ if(contains(root.getRight(), q)){ return getNearestCommonAncestor(root.getRight(), p, q); }else{ return root; } } } } //给定的树root中是否包含节点p private static boolean contains(TreeNode root, TreeNode p){ if(root.getData() == p.getData()){ return true; }else{ return contains(root.getLeft(), p) || contains(root.getRight(), p); } }}

?

?

热点排行