zoukankan      html  css  js  c++  java
  • 输出二叉树中所有从根结点到叶子结点的路径

    // 输出二叉树中所有从根结点到叶子结点的路径.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;
    }
    

    运行结果:


  • 相关阅读:
    吉哥系列故事――恨7不成妻
    K
    F
    树状数组
    34.在排序数组中查找元素的第一个和最后一个位置--二分查找
    CSS选择器及其权重
    CSS布局 圣杯和双飞翼
    983. 最低票价 -- 动态规划
    合并k个排序链表 二分
    面试题 16.03. 交点
  • 原文地址:https://www.cnblogs.com/riskyer/p/3356055.html
Copyright © 2011-2022 走看看