微软面试之4 在二元树中找出和为某一值的所有路径(树)
来源:互联网 发布:97天龙八部gotv源码 编辑:程序博客网 时间:2024/05/18 00:52
4 题目:输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如 输入整数22和如下二元树
10
/ /
5 12
/ \
4 7
则打印出两条路径:10, 12和10, 5, 7。
#include <iostream>
using namespace std;
struct BSTreeNode {
int value;
BSTreeNode * left;
BSTreeNode * right;
};
struct Stack {
int data[100];
int top;
};
void addNode(BSTreeNode * & root ,int value) {
if(root==NULL) {
BSTreeNode * p = new BSTreeNode;
p->value = value;
p->right = NULL;
p->left = NULL;
root = p;
}
if(value > root->value) {
addNode(root->right,value);
}
if(value< root->value) {
addNode(root->left,value);
}
}
void allPath(BSTreeNode * root ,int n,Stack ss) {
int m;
m = n-(root->value);
ss.data[ss.top] = root->value;
ss.top++;
if((n==root->value) && (root->left==NULL) && (root->right==NULL)){
cout<<root->value<<endl;
for(int j=0;j<ss.top;j++) {
cout<<ss.data[j]<<" ";
}
cout<<endl;
}
else {
Stack s;
s.top = ss.top;
for(int i=0; i<ss.top;i++) {
s.data[i] = ss.data[i];
}
if(root->left != NULL) {
allPath(root->left,m,s);
}
if(root->right != NULL) {
allPath(root->right,m,s);
}
}
}
int main() {
BSTreeNode * root = NULL;
Stack ss;
ss.top = 0;
addNode(root,10);
addNode(root,6);
addNode(root,11);
addNode(root,12);
addNode(root,4);
addNode(root,9);
addNode(root,8);
allPath(root,33,ss);
}
- 微软面试之4 在二元树中找出和为某一值的所有路径(树)
- 微软编程题之在二元树中找出和为某一值的所有路径
- 微软面试100题-4.在二元树中找出和为某一值的所有路径
- 微软100题(4) 在二元树中找出和为某一值的所有路径
- 微软100题第4题(在二元树中找出和为某一值的所有路径)
- 微软算法100道题------在二元树中找出和为某一值的所有路径
- 面试100题:4.在二元树中找出和为某一值的所有路径
- 面试100题:4.在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径(4)
- 4. 微软面试题: 在二元树中找出和为某一值的所有路径(树)
- 微软等数据结构+算法面试100题(45)-- 在二元树中找出和为某一值的所有路径
- [编程之美-03]在二元树中找出和为某一值的所有路径
- [编程之美-12]在二元树中找出和为某一值的所有路径
- 程序员面试100题---4.在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- 4.在二元树中找出和为某一值的所有路径(树)
- No4、在二元树中找出和为某一值的所有路径(树)
- Android编译系统分析大全
- Eclipse连接mysql,以及把随意一个日期变成星期几的例子
- 各种分布式文件系统简介
- 记录生活,学习点滴,加油!!!
- 【Android 开发教程】自定义ContentProvider的使用
- 微软面试之4 在二元树中找出和为某一值的所有路径(树)
- VC++程序提升管理员权限
- android RadioButton的问题
- 数据结构(3)——二分法查找法
- oracle入门很简单:五、oracle自带的客户端工具sqlplus/sqlplusw
- /usr/bin/ld: cannot find -lxxx 问题总结
- firmware upgrade encountered an issue.please select recovery mode in kies & try again
- Hadoop 2.x(YARN)安装配置LZO
- 微软面试100之1 把二元查找树转变成排序的双向链表(树)