zoukankan      html  css  js  c++  java
  • 数组实现多叉树

    说明:本文所用方法仅针对多叉树,并不适用于二叉树。

    实现思路:首先,设计树结点结构,其中应该包含结点数据和孩子结点的位置,本文用结构体实现,data表示结点数据,children是一个不定长数组,用于保存孩子结点的位置。然后,定义一个数组testTree[],用于存储树结点。之后,静态的实现下图所示的测试树。最后,用递归方法遍历该测试树。

    测试所用的树结构如下图所示:

    测试遍历路径如下图:

    C++实现:

    #include<iostream>
    #include<vector>
    using namespace std;
    
    struct Node		//树结点的结构 
    {
    	int data;
    	vector<int> children;
    };
    
    void traverseTree(struct Node tree[], int index)
    {
    	int count = tree[index].children.size();	//计算n结点孩子的个数
    	cout<<tree[index].data<<" ";
    	while(count > 0)
    	{
    		count--;
    		traverseTree(tree,tree[index].children.at(count));
    	} 
    }
    
    int main()
    {
    	struct Node testTree[6];	//第一六个树结点 
    	for (int i=0; i<6; i++)	//初始化六个结点的内容,分别为1,2,3,4,5,6 
    		testTree[i].data = i+1;	 
    	//初始化树,为结点连上纸条 
    	testTree[0].children.push_back(1); 
    	testTree[0].children.push_back(2);
    	testTree[0].children.push_back(3);
    	testTree[2].children.push_back(4);
    	testTree[2].children.push_back(5);
    	//testTree[0]是树根,访问树
    	traverseTree(testTree,0);
    	cout<<endl;
    	return 0;
    }
    

    运行结果:

  • 相关阅读:
    1137. 第 N 个泰波那契数
    486. 预测赢家
    python函数—函数的参数+递归函数
    python函数—调用函数+定义函数
    Seize the day
    数学建模基础学习2-matlab + lingo
    Python基础--使用list和tuple+条件判断+使用dict和set
    经济学人精读丨中国的电子商务
    数学建模基础学习1
    C盘今天爆掉了,罪魁祸首--百度云管家
  • 原文地址:https://www.cnblogs.com/godfriend/p/10932340.html
Copyright © 2011-2022 走看看