2016搜狐笔试二叉树和最大的子树

问题描述:

给一个二叉树,每个节点都是正或负整数,如何找到一个子树,它所有节点的和最大?

思路:采用自底向上的计算。先计算左右子树总和值,用左右子树的总和加上当前节点值,如果当前总和大于最大值,则更新最大值,同时将最大子树根节点更新为当前根。简单说,就是后序遍历。

代码:

[cpp] view plaincopy

  1. #include <iostream>
  2. #include <limits>
  3. using namespace std;
  4. struct Node
  5. {
  6. long data;
  7. Node *left;
  8. Node *right;
  9. };
  10. //  由于要更新最大值和最大子树根,因此采用了引用参数
  11. //  也可以考虑使用全局变量来处理
  12. long Max_sub_tree(Node *root , long &max_sum , Node *& sub_root)
  13. {
  14. if(NULL == root)
  15. {
  16. sub_root = root;
  17. return 0;
  18. }
  19. //  采用后续遍历
  20. long left_sum = Max_sub_tree(root->left , max_sum , sub_root);       //左子树的总和(计算总和过程中可能已经更新了当前的最大值和子树)
  21. long right_sum = Max_sub_tree(root->right , max_sum , sub_root); //再计算右子树
  22. long sum = root->data + left_sum + right_sum;
  23. if(sum >= max_sum)
  24. {
  25. max_sum = sum;
  26. sub_root = root;
  27. }
  28. return sum;
  29. }
  30. int main()
  31. {
  32. Node p = {1,NULL,NULL};
  33. Node q = {-3,NULL,NULL};
  34. Node lr = {2 , &p , &q};
  35. Node rr = {1 , &q , &p};
  36. Node r = {5 , &lr , &rr};
  37. Node *re = NULL;
  38. long max_sum = numeric_limits<long>::min();
  39. long sum = Max_sub_tree(&r , max_sum , re);
  40. if(NULL == re)
  41. {
  42. cout<<"empty tree!!!";
  43. }
  44. else
  45. {
  46. cout<<"max sum is :"<<max_sum<<endl;
  47. }
  48. return 0;
  49. }

时间: 2024-12-17 19:27:44

2016搜狐笔试二叉树和最大的子树的相关文章

2014_05_29搜狐笔试部分题目

1.ACID含义 ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(Transaction)的数据库系统,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求. 2.二路归并.两个排好序的数组,归并成一个排好序的数组. C:void merge(int *a,i

剑指Offer——当当+搜狐+好未来笔试题+知识点总结

剑指Offer--当当+搜狐+好未来笔试题+知识点总结 情景回顾 时间:2016.9.21 15:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:当当笔试.搜狐笔试.好未来笔试 3场笔试中好未来相对简单点. 好未来编程题 马踏棋盘(贪心算法) ??马踏棋盘是经典的程序设计问题之一,主要的解决方案有两种:一种是基于深度优先搜索的方法,另一种是基于贪婪算法的方法.第一种基于深度优先搜索(DFS)的方法是比较常用的算法,深度优先搜索算法也是数据结构中的经典算法之一,主要是采用递归的

搜狐2016研发工程师编程题

1.[编程题]马戏团 搜狐员工小王最近利用假期在外地旅游,在某个小镇碰到一个马戏团表演,精彩的表演结束后发现团长正和大伙在帐篷前激烈讨论,小王打听了下了解到, 马戏团正打算出一个新节目“最高罗汉塔”,即马戏团员叠罗汉表演.考虑到安全因素,要求叠罗汉过程中,站在某个人肩上的人应该既比自己矮又比自己瘦,或相等. 团长想要本次节目中的罗汉塔叠的最高,由于人数众多,正在头疼如何安排人员的问题.小王觉得这个问题很简单,于是统计了参与最高罗汉塔表演的所有团员的身高体重,并且很快找到叠最高罗汉塔的人员序列.

2017校招运维岗总结(腾讯+百度+京东+华为+中兴+小米+58+平安科技+搜狐+航天三院+Others)

先总结一下面试过的公司吧,可以为后人选择公司作为参考 前面是我对各公司的评价,不想看的可以直接拉到后面   最寒心的: 腾讯 内推的时候问六级过了吗,没过能毕业吗? 然后聊了10分钟项目就挂了 : )    校招的时候,笔试完了状态直接变成了面试未通过 最糟心的: 百度 内推死于二面,技不如人,甘拜下风    校招死于三面,据说百度今年在哈尔滨只招了15人,而且我也有点作死,投的岗位全国招15个  死于三面不甘心啊 最闹心的: 京东 京东直接校招,然后9月8号发短信让9月10号去北京面试,9月9

2014-2015年搜狐营业收入及未来展望调查报告

搜狐今天公布了截至2015年12月31日未经审计的2015年第四季度及全年财务报告.财报显示,搜狐Q4总营收为4.66亿美元,同比下滑2%;归属搜狐的净亏损为3100万美元,上年同期净亏损为2000万美元,同比扩大55%. 第四季度重要业绩 ·总收入为4.66亿美元,较2014年同期下降2%,较上一季度下降11%. ·品牌广告收入为1.41亿美元,较2014年同期下降5%,较上一季度下降7%.其中,搜狐媒体平台,即不包括视频业务的其他搜狐媒体业务收入为4,900万美元,与2014年同期持平,较上

仿爱奇艺视频,腾讯视频,搜狐视频首页推荐位轮播图介绍(一)

请尊重分享成果,转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52327435 前言:本篇只是一个介绍这个一个类库,具体实现思路代码会下篇中进行分析出来, 仿爱奇艺视频,腾讯视频,搜狐视频首页推荐位轮播图github地址: https://github.com/hejunlin2013/SuperIndicator , 如果觉得还行,欢迎点个star. SuperIndicator a superindicatorlibray fo

新浪搜狐网易等那些老牌互联网公司现在都怎样了?

对互联网企业来说,十年可以改变很多,可以改变人们的上网习惯,可以改变人们的上网需求,十年甚至可以让主流用户都换了一代,十年是个坎.从2005年到2015年,有些老牌互联网企业陷入十年魔咒,日渐式微,走向没落. 对于国内互联网企业来说,十年可以改变很多,可以改变人们的上网习惯,可以改变人们的上网需求,十年甚至可以让主流用户都换了一代,十年是个坎.从2005年到2015年,有些老牌互联网企业陷入十年魔咒,日渐式微,走向没落.但也不乏一些老牌但不老化的企业,或厚积薄发后一日千里,或稳扎稳打,愈加强大.

yii2.0下,单图片上传到搜狐云台以及图片上传到本机。

图片服务器接的是搜狐云台.在搜狐云台上有代码包,下载下来,放到yii框架的vendor下. yii2.0导入第三方库,很简单,写个autoload的文件,然后在入口脚本index.php中包含那个autoload文件就好了.具体到这个云台的库,只要包含代码中的autoload文件就好了. 简单介绍下搜狐云台的实现,用户会有一个对应的域名,然后选择建一些bucket,文件的上传下载都是在这个bucket中执行.函数调用在云台提供的文档中介绍的很清楚.这里就不再介绍了.同时我只从php的部分来介绍,

国内各大互联网公司相关技术站点3.0版 (集合腾讯、阿里、百度、搜狐、新浪、网易、360等共28个)

在2013-07-15 ,3年前整理了一份国内各大互联网公司相关技术站点2.0版 (集合腾讯.阿里.百度.搜狐.新浪.360等共49个) 近日重新整理了一番,希望能对大家有所帮助 2013年 腾讯系列(13)  阿里系列(18)  百度系列(3)  搜狐系列(3)  新浪系列(2)  360系列(2)   其他(9) 2016年 腾讯系列(8)  阿里系列(5)  百度系列(6)  搜狐系列(1)  新浪系列(1)  360系列(2)   其他(3) 新增 网易(2) 腾讯系列(8) 现存(7)