编写程序找出非空二叉树中和最大的路径,二叉树结点为不等于0的整数。本题的“路径”定义为二叉树中的结点序列vi​,...,vj​,序列中前一个结点是后一个结点的父结点,但路径不一定是以根结点为起点,也不一定是以叶结点为终点。路径的和定义为该路径所包含的所有结点的数据值之和。

输入格式:

输入为一组用空格间隔的整数,个数不超过100个,表示带空指针信息的二叉树先根序列。

输出格式:

输出为两行,第一行为该二叉树路径和的最大值,第二行为一组整数,每个整数后一个空格,表示该最大路径包含的结点值(按所在层数递增顺序输出)。如果存在多条满足条件的路径,则输出最短(包含结点个数最少)者,如果存在多条最短的路径,则输出最靠左上者。

输入样例1:

1 2 0 0 3 0 0

输出样例1:

4
1 3

输入样例2:

-1 2 0 0 3 4 0 0 0

输出样例2:

7
3 4

输入样例3:

3 2 0 0 -1 4 0 0 0

输出样例3:

6
3 -1 4 
#include<stdio.h>
#include<stdlib.h>typedef struct Node{int data;struct Node *left , *right;
}*BT;int max = -9999999;
int sum;
int min_cnt = 9999999;
int tmp[101];
int flag = 0;
int stop = 0;BT Create(BT);
void dfs(BT , int , int);int main(){BT root = NULL;root = Create(root);if(!root){printf("0");return 0;}dfs(root , 0 , 0);printf("%d\n" , max);flag = 1;dfs(root , 0 , 0);flag = 2;dfs(root , 0 , 0);return 0;
}BT Create(BT root){int num;scanf("%d" , &num);if(num == 0){return NULL;}root = (BT)malloc(sizeof(struct Node));root->data = num;root->left = Create(root->left);root->right = Create(root->right);return root;
}void dfs(BT root , int start , int deep){if(root && !stop){tmp[deep] = root->data;sum = 0;for(int i = start;i <= deep;i ++){sum += tmp[i];}if(sum > max && !flag){max = sum;}if(flag == 1){if(sum == max){if(deep - start < min_cnt){min_cnt = deep - start;}}}if(flag == 2){if(sum == max && deep - start == min_cnt && !stop){for(int i = start;i <= deep;i ++){printf("%d ", tmp[i]);}stop = 1;return;}}if(sum <= 0){start = deep + 1;}dfs(root->left , start , deep + 1);dfs(root->right , start , deep + 1);}
}

7-3 二叉树路径和II相关推荐

  1. LeetCode 112. 路径总和 、113. 路径总和 II 思考分析

    目录 112. 路径总和 题目 递归解 递归解,其他人的解法 迭代解,其他人的解法 113. 路径总和 II 题目 递归解 递归解,参考别人的思路 112. 路径总和 题目 给定一个二叉树和一个目标和 ...

  2. 113. 路径总和 II golang

    113. 路径总和 II 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = ...

  3. leetcode113. 路径总和 II

    113. 路径总和 II 难度中等163 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标 ...

  4. 关于二叉树路径的遍历和处理

    1,找到所有到达叶子节点的路径,用path数组记录路径 例题:力扣257. 二叉树的所有路径(JavaScript)_前端-pww的博客-CSDN博客 257. 二叉树的所有路径 :给定一个二叉树,返 ...

  5. Java实现 LeetCode 113 路径总和 II

    113. 路径总和 II 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = ...

  6. 二叉树路径应用举例(基于非递归后序遍历)

    #include "stdafx.h" #include <iostream> #include <fstream>using namespace std; ...

  7. 二叉树路径和最大python_python3实现在二叉树中找出和为某一值的所有路径(推荐)...

    请写一个程序创建一棵二叉树,并按照一定规则,输出二叉树根节点到叶子节点的路径. 规则如下: 1.从最顶端的根结点,到最下面的叶子节点,计算路径通过的所有节点的和,如果与设置的某一值的相同,那么输出这条 ...

  8. 深度优先遍历算法-03二叉树路径遍历问题

    二叉树路径遍历 简述 比较基础的一个DFS的题目,但是确实很多难题的模板.LeetCode很多二叉树的题本质上就是这个路径遍历. 本题为了输出路径,使用DFS的经典结构栈完成. 问题描述 给定一个二叉 ...

  9. Python3解题:二叉树路径总和问题

    Python3解题:二叉树路径总和问题 原题 https://leetcode-cn.com/problems/path-sum-ii/ 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和 ...

最新文章

  1. 后处理程序文件大小的变量_【每日一题】(17题)面试官问:JS中事件流,事件处理程序,事件对象的理解?...
  2. 远程桌面mstsc /console(/admin) 的运用
  3. Orac and Game of Life CodeForces - 1350E(思维+BFS)
  4. 《Java程序员,上班那点事儿》 - 书摘精要
  5. mysql执行语句_MySQL查看实时执行的SQL语句
  6. 杭电 3400 Line belt 解题报告
  7. date java format_java-DateFormat
  8. excel表格乱码修复_修复从数据库复制的空白Excel单元格
  9. 单本振与双本振台标文件的区别在哪里?
  10. 《当程序员的那些狗日日子》(五十三)破局(中)
  11. 计算机内存是ram,电脑ram内存不足怎么办
  12. 比较计算机动画与传统动画的异同,定格动画和传统动画有什么区别?基本一样吧?...
  13. Mac | 使用 Wineskin 在 Mac 上运行 exe 程序
  14. 电子商务网站建设策划书_竞赛解析 | 全国大学生电子商务“创新、创意及创业”挑战赛...
  15. 手把手教你:基于TensorFlow的语音识别系统
  16. LeetCode_1677_数组中重复的数字
  17. 关于帐号因诱导关注违规进行粉丝删除的处理通知
  18. linux 文件的列数,Linux 输出文件列数,拼接文件
  19. 基于jupyter notebook的python编程-----MNIST数据集的的定义及相关处理学习
  20. 信息系统项目管理师EV、PV、AC、BAC、CV、SV、EAC、ETC、CPI、SPI各是什么意思

热门文章

  1. Linux的网络测试命令(转载)
  2. Scratch绘制蜘蛛网2
  3. linux防火墙清空所有规则,删除规则与清空所有规则《 iptables 防火墙 》
  4. 微信小程序发送多条服务通知
  5. CAN总线(三)——CAN FD协议及其与CAN2.0的异同
  6. 外企iOS开发的笔试题
  7. iVx实现页面简易新闻应用
  8. C语言10个学生分粉笔,《C语言程序设计》教学方法初探
  9. ReSharper:著名的VS代码生成工具
  10. 学习笔记-小甲鱼Python3学习第二十八讲:文件:因为懂你,所以永恒