您的位置:首页 > 其它

输出二叉树中所有从根结点到叶子结点的路径

2014-09-18 15:16 239 查看
<pre name="code" class="cpp">// 输出二叉树中所有从根结点到叶子结点的路径.cpp : 定义控制台应用程序的入口点。

#include <iostream>
#include <vector>
using namespace std;

struct BTNode
{
char m_value;
BTNode *m_left;
BTNode *m_right;
};
char path[100];
int pathlen=0;
//先序创建二叉树
void CreatBTree(BTNode *&root)
{
char nValue = 0;
cin >> nValue;
if ('#' == nValue)
{
root=NULL;
return;
}
else
{
root = new BTNode();
root->m_value = nValue;
CreatBTree(root->m_left);
CreatBTree(root->m_right);
}
}

//输出二叉树中所有从根结点到叶子结点的路径(递归)
void FindAllPath(BTNode *pRoot)
{
if (pRoot != NULL)
{

if (pRoot->m_left == NULL && pRoot->m_right == NULL)
{
path[pathlen++]=pRoot->m_value;
for (int i=0;i<pathlen;i++)
{
printf("%c ",path[i]);
}
printf("\n");
pathlen--;
return;
}
else
{
path[pathlen++]=pRoot->m_value;
FindAllPath(pRoot->m_left);
FindAllPath(pRoot->m_right);
pathlen--;
}
}
}

int main()
{
BTNode *pRoot = NULL;
vector<char> path;
CreatBTree(pRoot);
cout << "二叉树中从根到叶子结点的所有路径如下:" << endl;
FindAllPath(pRoot);
system("pause");
return 0;
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐