7-3 二叉树路径和II
编写程序找出非空二叉树中和最大的路径,二叉树结点为不等于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相关推荐
- LeetCode 112. 路径总和 、113. 路径总和 II 思考分析
目录 112. 路径总和 题目 递归解 递归解,其他人的解法 迭代解,其他人的解法 113. 路径总和 II 题目 递归解 递归解,参考别人的思路 112. 路径总和 题目 给定一个二叉树和一个目标和 ...
- 113. 路径总和 II golang
113. 路径总和 II 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = ...
- leetcode113. 路径总和 II
113. 路径总和 II 难度中等163 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标 ...
- 关于二叉树路径的遍历和处理
1,找到所有到达叶子节点的路径,用path数组记录路径 例题:力扣257. 二叉树的所有路径(JavaScript)_前端-pww的博客-CSDN博客 257. 二叉树的所有路径 :给定一个二叉树,返 ...
- Java实现 LeetCode 113 路径总和 II
113. 路径总和 II 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = ...
- 二叉树路径应用举例(基于非递归后序遍历)
#include "stdafx.h" #include <iostream> #include <fstream>using namespace std; ...
- 二叉树路径和最大python_python3实现在二叉树中找出和为某一值的所有路径(推荐)...
请写一个程序创建一棵二叉树,并按照一定规则,输出二叉树根节点到叶子节点的路径. 规则如下: 1.从最顶端的根结点,到最下面的叶子节点,计算路径通过的所有节点的和,如果与设置的某一值的相同,那么输出这条 ...
- 深度优先遍历算法-03二叉树路径遍历问题
二叉树路径遍历 简述 比较基础的一个DFS的题目,但是确实很多难题的模板.LeetCode很多二叉树的题本质上就是这个路径遍历. 本题为了输出路径,使用DFS的经典结构栈完成. 问题描述 给定一个二叉 ...
- Python3解题:二叉树路径总和问题
Python3解题:二叉树路径总和问题 原题 https://leetcode-cn.com/problems/path-sum-ii/ 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和 ...
最新文章
- 后处理程序文件大小的变量_【每日一题】(17题)面试官问:JS中事件流,事件处理程序,事件对象的理解?...
- 远程桌面mstsc /console(/admin) 的运用
- Orac and Game of Life CodeForces - 1350E(思维+BFS)
- 《Java程序员,上班那点事儿》 - 书摘精要
- mysql执行语句_MySQL查看实时执行的SQL语句
- 杭电 3400 Line belt 解题报告
- date java format_java-DateFormat
- excel表格乱码修复_修复从数据库复制的空白Excel单元格
- 单本振与双本振台标文件的区别在哪里?
- 《当程序员的那些狗日日子》(五十三)破局(中)
- 计算机内存是ram,电脑ram内存不足怎么办
- 比较计算机动画与传统动画的异同,定格动画和传统动画有什么区别?基本一样吧?...
- Mac | 使用 Wineskin 在 Mac 上运行 exe 程序
- 电子商务网站建设策划书_竞赛解析 | 全国大学生电子商务“创新、创意及创业”挑战赛...
- 手把手教你:基于TensorFlow的语音识别系统
- LeetCode_1677_数组中重复的数字
- 关于帐号因诱导关注违规进行粉丝删除的处理通知
- linux 文件的列数,Linux 输出文件列数,拼接文件
- 基于jupyter notebook的python编程-----MNIST数据集的的定义及相关处理学习
- 信息系统项目管理师EV、PV、AC、BAC、CV、SV、EAC、ETC、CPI、SPI各是什么意思