求二叉树从叶子到根节点的值组成数字的和
来源:互联网 发布:中国产业安全数据 编辑:程序博客网 时间:2024/06/05 03:12
题目:如下图二叉树,每个叶子节点到根节点的数值可以组成一个数字,如253/753/83,写代码求和,即253+753+83=1089
基本思路:利用栈,后序遍历二叉树,顺便求和,代码如下:
#include <stdio.h>#include <string.h>#include <math.h>#define NUM 5typedef struct node{ int val; int l; int r;}tree;typedef struct stack{ int top; tree s[NUM];}tree_stack;tree_stack s;int is_empty(tree_stack *s){ return (s->top == -1);}int is_full(tree_stack *s){ return (s->top >= NUM);}int push(tree_stack *s, tree *n){ if(is_full(s)) return -1; s->top++; memcpy(s->s + s->top, n, sizeof(tree)); return 0;}int pop(tree_stack *s, tree *n){ if(is_empty(s) || !n) return -1; memcpy(n, s->s + s->top, sizeof(tree)); s->top--; return 0;}void init_tree(tree *t){ t[0].val = 3; t[0].l = 1; t[0].r = 2; t[1].val = 5; t[1].l = 3; t[1].r = 4; t[2].val = 8; t[2].l = -1; t[2].r = -1; t[3].val = 2; t[3].l = -1; t[3].r = -1; t[4].val = 7; t[4].l = -1; t[4].r = -1;}int calcute(tree_stack *s){ tree n; int val,i; pop(s,&n); val = 0; if(n.l==-1 && n.r == -1) { val = n.val * pow(10,s->top+1); for(i=s->top;i>=0;i--) { val += s->s[i].val * pow(10,i); } printf("val:%d\n",val); } return val;}void show_tree(tree *t, int index, int *total){ if(index < 0) return; push(&s,t+index); show_tree(t,t[index].l,total); show_tree(t,t[index].r,total); *total += calcute(&s);}int main(){ int total = 0; tree t[NUM]; s.top = -1; init_tree(t); show_tree(t,0, &total); printf("total:%d\n",total); return 0;}
阅读全文
0 0
- 求二叉树从叶子到根节点的值组成数字的和
- 给定一个二叉树,节点值为0-9,从根节点到叶子结点组成一个数,求二叉树所有组成的数的和
- 二叉树系列---求所有从根到叶子路径组成的数的和
- 求从根节点到叶子节点的所有路径组成的数的和
- 求二叉树从根节点到每个叶子节点路径上不重复数字的最大个数
- 二叉树的每个节点为0-9的一个数字,根到叶子的一条路径拼成一个数,求所有路径形成的数字和
- 网易——求二叉树最大叶子节点到最小叶子节点的距离
- 搜狐研究院 求二叉树最大叶子节点到最小叶子节点的距离
- 打印二叉树从根节点到叶子节点的所有路径
- 二叉搜索树的最短路径,从根节点到叶子节点
- 求二叉树的叶子节点数目
- 求满二叉树(哈夫曼树)叶子节点和非叶子节点的数目
- 查看一颗二叉树从根到叶子路径的节点和是否等于某个给定的数
- 二叉树-输出树中从根到每个叶子节点的路径
- 【IT笔试面试题整理】二叉树中和为某一值的路径--从根到叶子节点
- !求二叉树中从根结点到叶子结点的路径
- Binary Tree Paths 二叉树所有从跟节点到叶子节点的路径
- Sum Root to Leaf Numbers 根节点到叶子组成数的和
- NYOJ-69-数的长度(数论)
- java的垃圾回收机制
- Ubuntu下网卡设置
- 【Python】数学函数、字符串和对象07
- Android Studio 3.0新建工程问题
- 求二叉树从叶子到根节点的值组成数字的和
- 关于diango--python的web开发
- 杭电acm 1259ZJUTACM(简单题)
- iOS应用性能调优的25个建议和技巧
- C语言编译lib库手动添加
- 栈的应用:中缀和后缀表达式的转换及计算
- Legal or Not 【topo 判定是否有环】
- 日常小记
- 机器学习-sklearn逻辑回归分析