在二叉树中寻找值最大的节点并返回。

您在真实的面试中是否遇到过这个题?

Yes
样例

给出如下一棵二叉树:

     1
/ \
-5 2
/ \ / \
0 3 -4 -5

返回值为 3 的节点。

思路:

题目算法很简单,定义一个新的节点max,令其值为一个非常小的数,利用前序(中序或后续)遍历比较给定节点与max的值,

若给定节点比max的值大,则把此节点赋值给amx,直至遍历完所有节点,返回的max即为最大节点.

但是在自己第一次写的时候也有点问题,用递归方法,max节点的定义就不能定义在函数的内部,要在函数外单独定义,并初始化。

所以:定义新节点是要注意必须在函数外部定义,因为下面函数内部进行的递归算法是调用函数本身,若在内部定义,每次都会重新申请新节点了。

代码如下:

class Solution {
public:
/**
* @param root the root of binary tree
* @return the max node
*/ //这里采用中序遍历方法
TreeNode *max=new TreeNode(-10000);
TreeNode* maxNode(TreeNode* root) {
// Write your code here
if(root==NULL){
return root;
}
else
{
maxNode(root->left);
if(root->val>max->val){
max->val=root->val;
}
maxNode(root->right);
}
return max;
}
};

Lintcode---二叉树的最大节点的更多相关文章

  1. lintcode : 二叉树的序列化和反序列化

    题目 二叉树的序列化和反序列化 设计一个算法,并编写代码来序列化和反序列化二叉树.将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”. 如何反序列化或序列化二叉树是没有限制 ...

  2. [Swift]LeetCode993. 二叉树的堂兄弟节点 | Cousins in Binary Tree

    In a binary tree, the root node is at depth 0, and children of each depth k node are at depth k+1. T ...

  3. Leetcode 993. 二叉树的堂兄弟节点

    993. 二叉树的堂兄弟节点  显示英文描述 我的提交返回竞赛   用户通过次数195 用户尝试次数229 通过次数195 提交次数462 题目难度Easy 在二叉树中,根节点位于深度 0 处,每个深 ...

  4. javascript数据结构与算法---二叉树(删除节点)

    javascript数据结构与算法---二叉树(删除节点) function Node(data,left,right) { this.data = data; this.left = left; t ...

  5. leetcode 235 236 二叉树两个节点的最近公共祖先

    描述: 给定二叉树两个节点,求其最近公共祖先.最近即所有公共祖先中深度最深的. ps:自身也算自身的祖先. 235题解决: 这是二叉搜索树,有序的,左边小右边大. TreeNode* lowestCo ...

  6. 【剑指offer】输入一颗二叉树的根节点,判断是不是平衡二叉树,C++实现

    原创博文,转载请注明出处! # 题目 # 举例 # 思路 由平衡二叉树的定义可知,判断二叉树是否是平衡二叉树的关键在于判断任意结点是否是平衡结点.后序遍历二叉树,判断节点的子树是否平衡并计算节点的子树 ...

  7. 剑指offer22:从上往下打印出二叉树的每个节点,同层节点从左至右打印。

    1 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 2 思路和方法 使用一个队列存放节点.先将根节点加入到队列中,然后循环遍历队列中的元素,遍历过程中,访问该节点的左右子节点,再将左 ...

  8. python二叉树及叶节点获取 (面试题)

    才疏学浅,智商不够,花了一晚上看了二叉树.记录一下: 1.二叉树的遍历 前序遍历:根节点->左子树->右子树 中序遍历:左子树->根节点->右子树 后序遍历:左子树->右 ...

  9. 二叉树中两节点的最近公共父节点(360的c++一面问题)

    面试官的问题:写一个函数  TreeNode* Find(TreeNode* root, TreeNode* p, TreeNode* q) ,返回二叉树中p和q的最近公共父节点. 本人反应:当时有点 ...

  10. 【js】Leetcode每日一题-二叉树的堂兄弟节点

    [js]Leetcode每日一题-二叉树的堂兄弟节点 [题目描述] 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但 父节点不 ...

随机推荐

  1. windows系统上安装与使用Android NDK r8d(一)

    什么是NDK? NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so 和 java 应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK 集成了交叉编译器,并 ...

  2. linux中的dup()系统调用

    参考1:http://www.blogjava.net/lihao336/archive/2011/12/13/366231.html 在linux纷繁复杂的内核代码中,sys_dup()的代码也许称 ...

  3. Linux 静态库与动态库搜索路径设置详解

    转载:http://blog.chinaunix.net/uid-29025972-id-3855495.html 1. 连接和运行时库文件搜索路径的设置 库文件在连接(静态库和共享库)和运行(仅限于 ...

  4. iOS8 NotificationCenter Extension 简介

    在最新的WWDC14上面,苹果发布了iOS8的一些新特性,而其中最让程序员兴奋的特性莫过于Extension,或者称之为Widget. 下面就来尝鲜试验一把. 一.Extension简介 首先,苹果只 ...

  5. EF DBContext中DbSet中Hashset添加对象后,DataGrid UI没有刷新的问题

    使用EF4/5添加数据库视图生成DBContext,如果数据表/对象之间有M-N对应关系,EF对自动添加引用类集合,是Hashset类型.由于不是ObservableCellection类型,在引用类 ...

  6. poi 技术动态更新 Excel模板内容,动态更新内容

    1.控制器方法 private URL base = this.getClass().getResource(""); /** * 流拍之后,可以下载询价单 * * @param ...

  7. [Android Pro] Android权限设置android.permission完整列表

    android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties”表在checkin数据库中,改值可以修改上传( Allows re ...

  8. T-sql 根据bak文件恢复新建数据库

    利用bak文件恢复新建数据库: 1:利用sqlserver界面管理工具恢复,在操作2005以上的版本可以讲界面的操作过程生成sql语句(本人在此徘徊了好久,得一位博友提醒才恍然大悟); 2:利用sql ...

  9. Ubuntu 16.04 LTS软件包管理基本操作

    前文 Ubuntu 16.04 新特性中我们已经介绍过,随着 Ubuntu 16.04 LTS 的发布,Ubuntu 的软件包管理命令也发生了变化,新系统采用了 Debian 项目中所使用的 APT( ...

  10. 【转】svn 的开发目录结构和流程

    原文: https://blog.csdn.net/iteye_15570/article/details/82548132 ------------------------------------- ...