• 数组实现多叉树


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

    实现思路:首先,设计树结点结构,其中应该包含结点数据和孩子结点的位置,本文用结构体实现,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;
    }
    

    运行结果:

  • 相关阅读:
    【JVM】内存与垃圾回收
    【缓存】缓存与分布式锁
    【Redis】入门与基础总结
    【Elasticsearch7.x】Elasticsearch 入门
    iOS开发ReactiveCocoa学习笔记(六)
    iOS开发ReactiveCocoa学习笔记(五)
    iOS开发ReactiveCocoa学习笔记(四)
    iOS开发ReactiveCocoa学习笔记(三)
    iOS开发ReactiveCocoa学习笔记(二)
    iOS开发ReactiveCocoa学习笔记(一)
  • 原文地址:https://www.cnblogs.com/godfriend/p/10932340.html
Copyright © 2020-2023  润新知