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

// 输出二叉树中所有从根结点到叶子结点的路径.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;

struct BTNode
{
	char m_value;
	BTNode *m_left;
	BTNode *m_right;
};

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

//输出二叉树中所有从根结点到叶子结点的路径(递归)
void FindAllPath(BTNode *pRoot, vector<char> path)
{
	if (pRoot != NULL)
	{
		path.push_back(pRoot->m_value);
		if (pRoot->m_left == NULL && pRoot->m_right == NULL)
		{
			for (vector<char>::iterator iter=path.begin(); iter!=path.end(); iter++)
			{
				cout << *iter << " ";
			}
			cout << endl;
			return;
		}
		else
		{
			FindAllPath(pRoot->m_left, path);
			FindAllPath(pRoot->m_right, path);
		}
	}
}

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

运行结果:


 

posted on 2013-10-07 21:11  you Richer  阅读(1206)  评论(0编辑  收藏  举报