数据结构课程

百度笔试题目:

给出一个二叉树,和一个整型值,求出二叉树上所有从根到叶子的路径,并且此路径上各个节点的权值之和等于给出的整型值。

解题思路:

根据二叉树的先根遍历思想,通过一个栈保存从根到当前节点的路径,每遍历一个节点,都从sum值中减去此节点的权值,此点遍历结束后,再从栈中弹出此节点,并在sum中加上此节点的权值。当sum为零且当前节点为叶子节点时,打印栈中保存的路径。

#include

#include

#define STACK_MAX 100

int sum = 25;

typedef struct _node{

int data;

struct _node *lchild;

struct _node *rchild;

}TreeNode;

int stack[STACK_MAX + 1] =

{0};

int top = 0;

int bottom = 0;

int push(int m)

{

if (top+1 > STACK_MAX) {

printf("stack full!\n");

return 0;

} else {

printf("push %d\n",m);

stack[++top] = m;

return 1;

}

}

int pop(int *m)

{

if (top == 0) {

printf("stack empty!\n");

return 0;

} else {

*m = stack[top--];

printf("pop %d\n",*m);

return 1;

}

}

int print_stack()

{

int i;

if (top == 0) {

printf("stack empty!\n");

return 0;

} else {

i = 1;

while (i <= top) {

printf("%d ",stack[i++]);

}

printf("\n");

return 1;

}

}

void create_tree(TreeNode

**node_p,FILE *fp)

{

int m;

fscanf(fp,"%d",&m);

if (m >= 0) {

*node_p = (TreeNode *)malloc(sizeof(TreeNode));

if (!(*node_p)) {

printf("err!!");

exit(1);

}

(*node_p)->data = m;

create_tree(&((*node_p)->lchild),fp);

create_tree(&((*node_p)->rchild),fp);

} else {

*node_p = NULL;

}

}

void print_tree(TreeNode

*node_p)

{

if (node_p != NULL) {

printf("%d ", node_p->data);

print_tree(node_p->lchild);

print_tree(node_p->rchild);

}

}

void del_tree(TreeNode

*node_p)

{

if (node_p != NULL) {

del_tree(node_p->lchild);

del_tree(node_p->rchild);

free(node_p);

}

}

void check_sum(TreeNode

*node_p)

{

int m;

if (node_p != NULL) {

push(node_p->data);

sum -= node_p->data;

printf("check %d begin\n",node_p->data);

if (node_p->lchild == NULL

&& node_p->rchild ==

NULL && sum == 0) {

print_stack();

}

check_sum(node_p->lchild);

check_sum(node_p->rchild);

printf("check %d over\n",node_p->data);

pop(&m);

sum += m;

}

}

int main()

{

FILE *fp = NULL;

fp = fopen("tree_sum_input.data","r");

if (fp == NULL) {

printf("fopen err!");

return 0;

}

TreeNode *root_p = NULL;

create_tree(&root_p,fp);

print_tree(root_p);

check_sum(root_p);

del_tree(root_p);

fclose(fp);

return 0;

}

5

3

7

10

-1

-1

-1

8

-1

9

-1

-1

2

1

-1

-1

11

-1

-1

数据结构课程

http://hi.baidu.com/数据结构课程推荐文章:

1. 二叉树的建立与遍历

2. poj 2255 Tree Recovery 二叉树

3. 创建二叉树 并进行先序、中序、后序排列 求叶子节点数、总节点数和树的深度

4. 二叉树的中序、前序、后序的递归、非递归遍历算法,包含建树的实现(一)

5. 二叉树的后序遍历 pascal

6. A Binary Apple Tree 苹果二叉树

7. ds18b20二叉树搜索算法

8. 转:由二叉树的遍历还原二叉树

9. java jdk5.0 范类实现的 二叉树 对任何对象排序 BinaryTree

10. 数据结构之二叉树(C语言)实现文件

java二叉树求权值_百度笔试题目:二叉树路径权值和【转】相关推荐

  1. 带权路径长度wpl值_哈夫曼树带权路径长度怎么计算

    哈夫曼树的带权路径长度是什么? 1.树的路径长度 树的路径长度是从树根到树中每一结点的路径长度之和.在结点数目相同的二叉树中,完全二叉树的路径长度最短. 2.树的带权路径长度(Weighted Pat ...

  2. java中的左值右值_快速了解C/C++的左值和右值

    最近在segmentfault上看到一个提问<c++隐式的类类型转换问题>:一时不知怎么回答,查阅相关资料后整理了本文,以供参考学习. 定义 早期的C给出的定义:左值是一个表达式,可能出现 ...

  3. 已知空间中的三点 求三角形面积_【气宇轩昂】解三角形最值问题的四大模型尤其是第四种模型,简直不要太赞哦!!!...

    点击上方蓝色字体"高中数学王晖"关注王晖老师,免费获取各种知识干货和学习经验~~~您的点赞转发是对老师的最大鼓舞~~~ 距高考还有262天 1 三角函数有界性 在三角函数中,正弦函 ...

  4. 秋招/春招常见笔试题目——二叉树系列(C/C++)

    大家好!下面是我(一个小小的搬运工)在秋招的时候在Leetcode上整理的一些二叉树的题目(中等难度),笔试和面试考相似思路题目的概率比较大,大家如果准备春秋季招聘可以先根据这些题目复习(具体思路可以 ...

  5. 赛码浪潮笔试题库软件实施岗位_浪潮笔试题目

    6.2 笔试题目 浪潮软件研发 B 卷( 60 分钟) 注:对于有 C 和 JAVA 选择的试题,考生可以选择其中一种解答,请在答题卡中标明.即选择 C 语言试题解答,则解答的 JAVA 试题不计分: ...

  6. c++编写算法判断二叉树是否为完全二叉树_[校招-算法题] 二叉树基础算法1

    二叉树是面试中常考的数据结构,因为涉及大量指针操作,因此可以考察思维的严谨性和灵活性.但是校招中的二叉树题规律性很强,因此需要总结一下. 各种常见的二叉树概念 二叉树:每个结点最多有两个子树(左子树和 ...

  7. 二叉树-求第一条最长路径长度并输出路径

    求第一条最长路径长度并输出路径 算法思想 利用递归遍历思想,先求出二叉树最长路径也就是当前树的高度 再调用求路径长度的函数判断指针走向输出路径 int LongestPath(BiTree *T){ ...

  8. 微信小程序如何从数组里取值_微信小程序获取各种数据值跟设置数据值

    微信小程序获取各种数据值跟设置数据值. 修改设置data数组中的某个值://小程序接收后台数据若为数组时,下标最好为默认索引数组,从0开始排序 var articleId ='1'//对应数组中的索引 ...

  9. java编程求卡特兰数_卡特兰数(Catalan Number)

    卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列.该数在计算机专业中比较重要,有一些具体的应用实例.这篇文章主要分三部分: 卡特兰数递归式的含 ...

最新文章

  1. Python-anaconda-Spyder使用matplotlib画图无法显示报错解决:Figures now render in the Plots pane by default. To mak
  2. Mysql 层级、执行顺序、执行计划分析
  3. 改变Android ProgressBar样式颜色
  4. Spring boot中使用Swagger2
  5. Cascade R-CNN升级!目标检测制霸COCO,实例分割超越Mask R-CNN
  6. Traffic Manager Overview
  7. Excel-DNA开发包:ExcelDna-0.34.6.zip下载
  8. 团队-象棋游戏-代码设计规范
  9. Atitit office ooxml 系列 excel的读取api 框架 poi的使用
  10. Filezilla server 使用教程
  11. Android控件 TabHost,Android控件之TabHost用法实例分析
  12. 盘点城市智慧水务领域的英文期刊
  13. Linux实验四——Linux用户和用户组管理
  14. servlet生成验证码和点击刷新验证码
  15. oracle打开audit,oracle开启audit(审计)
  16. CSDN如何修改用户名(CSDN ID)、用户昵称以及自定义博客域名等
  17. 鳗鱼刺多怎么处理图像_鳗鱼小刺多怎么处理
  18. 区块链技术应用场景之政务链
  19. QQ文件和公告不显示
  20. 利用Lambda表达式从实体集合中筛选出符合条件的实体集合

热门文章

  1. 斯坦福大学博士后王鸿伟: 知识图谱辅助的个性化推荐系统
  2. 通俗易懂!视觉slam第二部分——salm过程简介
  3. leetcode力扣75. 颜色分类
  4. 【广告技术】如何提升定向广告效果?腾讯广告提出高质量负实例生成新方法
  5. socket 获取回传信息_java中使用网络通信(Socket)来传输对象
  6. 伺服电机回原点的原理_西门子V90伺服电机绝对值编码器回原点常用方法
  7. windows删文件:找不到该项目,该项目不在xx中,请确认位置,然后重试 的解决方案
  8. Leetcode刷题系列汇总
  9. CCF认证-2015-3-2 数字排序
  10. sklearn学习 5.降维算法PCA和SVD