博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微软面试4、在二元树中找出和为某一值的所有路径
阅读量:5342 次
发布时间:2019-06-15

本文共 1582 字,大约阅读时间需要 5 分钟。

题目:输入一个整数和一棵二元树。

从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如 输入整数22和如下二元树
  10   
  / /   
  5 12   
  / /   
  4 7
则打印出两条路径:10, 12和10, 5, 7。

思路1:(这个感觉不是最好的,看到的欢迎分享新方法)

后续遍历二叉树,同时用一个变量sum记录栈中所有节点的和,当节点输出时,判断该节点是否是叶子节点,同时sum是否是目标和

若两者均满足,则测试栈中的元素即是一条路径。

代码:

1 View Code  2  void PathSum(BiTree BT,int SUM){ 3      Stack tag;//标记栈 4      Stack S;//树节点栈 5      Stack temp;//用来输出的 6      int sum=0; 7      BinTree p=BT; 8      while(p!=NULL||!isEmptyStack(S)){ 9          while(p!=NULL){10               Push(S,p);11               sum+=p->data;12               Push(tag,0);13               p=p->lchild;14          }15          if(Top(tag)==1){16                 p=Top(S)17                 if(sum==SUM&&p->lchiled==NULL&&prchild==NULL){18                        while(isEmptyStack(S)){19                               push(temp,Top(S));20                               pop(S);21                         }22                         while(isEmptyStack(temp)){23                               BinTree x=Top(temp);24                               printf("%d",x->data);25                               push(S,x);26                               pop(temp);27                          }28                  }29                  BinTree x=Top(S);30                  Sum-=x->data;31                  Pop(S);32                  Pop(tag);33                  p=NULL;34          }else{35               p=Top(S);36               p=p->rchild;37               Top(tag)->data=1;38          }39      }40  }

 

思路2:深度优先搜索,用队列保存节点(这个暂时写不出来代码,看完深度优先搜索后给出)

转载于:https://www.cnblogs.com/GoAhead/archive/2012/05/24/2516650.html

你可能感兴趣的文章
MATLAB作图方法与技巧(一)
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
eclipse-将同一个文件分屏显示
查看>>
对闭包的理解
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
windows编程ASCII问题
查看>>
.net webService代理类
查看>>
Code Snippet
查看>>
Node.js Express项目搭建
查看>>
zoj 1232 Adventure of Super Mario
查看>>
1201 网页基础--JavaScript(DOM)
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
oracle job
查看>>
Redis常用命令
查看>>