zoukankan      html  css  js  c++  java
  • 刷题236. Lowest Common Ancestor of a Binary Tree

    一、题目说明

    题目236. Lowest Common Ancestor of a Binary Tree,在一个二叉树中找两个节点的最近公共祖先。难度是Medium!

    二、我的解答

    这个用二叉树的递归遍历,稍加改造即可:

    class Solution{
    	public:
    		TreeNode* lowestCommonAncestor(TreeNode* root,TreeNode*p,TreeNode*q){
    			if(root == NULL) return root;
    			if(root == p || root==q) return root;
    			TreeNode* left,*right;
    			left = lowestCommonAncestor(root->left,p,q);
    			right = lowestCommonAncestor(root->right,p,q);
    			if(left !=NULL && right!=NULL){
    				return root;
    			}else if(left != NULL){
    				return left;
    			}else if(right != NULL){
    				return right;
    			}else{
    				return NULL;
    			}
    		}
    };
    

    性能如下:

    Runtime: 16 ms, faster than 94.88% of C++ online submissions for Lowest Common Ancestor of a Binary Tree.
    Memory Usage: 16.7 MB, less than 87.27% of C++ online submissions for Lowest Common Ancestor of a Binary Tree.
    

    三、优化措施

    其他方法,暂时想不起来。

    所有文章,坚持原创。如有转载,敬请标注出处。
  • 相关阅读:
    Sqlite 语句 记录
    string.Format对C#字符串格式化
    C#耗时计算
    控件缩放
    C# winfrom Datagridview表头样式和选中样式
    C# winfrom Datagridview控件下拉菜单
    C# 平台问题
    编程思想
    强制删除sql用户链接
    MyEclipse快捷键大全
  • 原文地址:https://www.cnblogs.com/siweihz/p/12288490.html
Copyright © 2011-2022 走看看