第一步,创建二叉树,这在上一篇文章"二叉树的创建和遍历“中详细讲解。
第二步, 如何查找? 思想如下: 利用栈的思想,一个一个将树的结点压入栈,同时利用一个全局变量来记录栈中所有树结点数据之和,判断是否等于所要查找之和?同时判断当前树结点是否为叶子结点?如果同时满足,则找到一条路径,打印栈中数据。(逆序输出)
先创建如下二叉树:
先序创建二叉树,输入0则返回上一级,详见上一篇文章。
则输入:1213000210003200500
如果查找和为6的路径:
理论上可推出有: 1,2,2,1 和1,3,2
代码:
// Bitree.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef int type;
int record=0;
//定义数结点
typedef struct bNode
{
type data;
struct bNode *lchild;
struct bNode *rchild;
}bNode,*bTree;
//定义路径结点