C++ 树-双亲表示法、孩子表示法、双亲孩子表示法

转载 2018年04月16日 21:50:01

双亲表示法:

#include<iostream>  
using namespace std;  
template<typename T>  
struct Node{  
    T _data;  
    int parent;  
};  
template<typename T>  
struct Tree{  
    Node<T> array[100];  
    int count;  
};  
template<typename T>  
void addNode(T data,int parent,Tree<T>& tree){  
    tree.array[tree.count]._data=data;  
    tree.array[tree.count].parent=parent;  
    tree.count++;  
}  
  
int main(){  
      
    Tree<int> tree;  
    tree.count=0;  
    addNode(0,-1,tree);  
  
    for(int i=0;i<tree.count;i++){  
        cout<<tree.array[i]._data<<' '<<tree.array[i].parent<<endl;  
    }  
    return 0;  
}  

孩子表示法:

#include<iostream>  
using namespace std;  
struct Child{  
    int index;  
    Child* next;  
};  
struct Node{  
    int data;  
    Child* child;  
};  
struct Tree{  
    Node array[100];  
    int count;  
};  
  
void AddNode(Tree& t,int data,int parent){  
    t.array[t.count].data=data;  
    t.array[t.count].child=0;  
    if(parent>-1){  
        Child* ch=new Child;  
        ch->index=t.count;  
        ch->next=0;  
        Child*& temp=t.array[parent].child;  
        while(temp!=0){  
            temp=temp->next;  
        }  
        temp=ch;  
    }  
    t.count++;  
}  
  
int main(){  
    Tree tree;  
    tree.count=0;  
    AddNode(tree,0,-1);  
      
      
    for(int i=0;i<tree.count;i++){  
        cout<<tree.array[i].data<<endl;  
    }  
    return 0;  
}  

双亲孩子表示法:

#include<iostream>  
using namespace std;  
struct Child{  
    int index;  
    Child* next;  
};  
struct Node{  
    int data;  
    int parent;   
    Child* child;  
};  
struct Tree{  
    Node array[100];  
    int count;  
};  
  
void AddNode(Tree& t,int data,int parent){  
    t.array[t.count].data=data;  
    t.array[t.count].child=0;  
    t.array[t.count].parent=parent;  
    if(parent>-1){  
        Child* ch=new Child;  
        ch->index=t.count;  
        ch->next=0;  
        Child*& temp=t.array[parent].child;  
        while(temp!=0){  
            temp=temp->next;  
        }  
        temp=ch;  
    }  
    t.count++;  
}  
  
int main(){  
    Tree tree;  
    tree.count=0;  
    AddNode(tree,0,-1);  
  
      
    for(int i=0;i<tree.count;i++){  
        cout<<tree.array[i].data<<endl;  
    }  
    return 0;  
}  

树 的 双亲表示法 及 双亲孩子表示法

1.概念     树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点...
  • shyjhyp11
  • shyjhyp11
  • 2017-05-23 16:29:55
  • 1908

树的双亲孩子表示法

完成了图的邻接表表示法,发现它的存储结构与树的孩子链表表示法相似,都是由一个数组加若干邻接链表形成的结构。只是在构造和遍历时有所区别。 在孩子链表中查找兄弟结点比较困难,查找孩子和双亲很方便,故...
  • CCSUXWZ
  • CCSUXWZ
  • 2016-12-08 11:29:20
  • 1236

看数据结构写代码(30) 树的双亲孩子表示法的实现

树的 实现 方法 有三种:1.双亲 表示法  2. 孩子 表示 方法 3 结合 双亲 孩子 表示法 4. 二叉链表法 其中 前三种  都是 顺序 表示法, 都是 用 一组 顺序的 内存 空间 来表示...
  • fuming0210sc
  • fuming0210sc
  • 2015-03-26 16:52:11
  • 1921

孩子双亲表示法

  • 2014年05月08日 08:51
  • 2KB
  • 下载

实现由双亲节点存储的树转化为二叉树的遍历算法实现

都知道,树的先根遍历和后根遍历分别对应了二叉树的先序遍历和中序遍历,而由先序遍历和中序遍历可以确定唯一的二叉树。 #include #include #include using names...
  • sinat_30062549
  • sinat_30062549
  • 2016-04-10 10:02:04
  • 2031

树的存储:双亲数组法,孩子链表法,孩子兄弟法

 在实际应用中,人们采用多种形式的存储结构来表示树,既有顺序存储结构,又有链式存储结构,但无论采用哪种存储结构,都要求存储结构不但能存储结点本身的信息,还能存储树中各结点之间的逻辑关系。下面介绍几种常...
  • long458
  • long458
  • 2010-09-27 23:32:00
  • 9843

数据结构之双亲表示法建树和操作

树的双亲表示法假设以一组连续空间存储树的结点,同时在每个结点中,附设一个指示器指 示其双亲结点到链表中的位置 。也就是说,每个结点除了知道自己是谁以外,还知道 它的双亲在哪里...
  • doubleselect
  • doubleselect
  • 2014-10-09 09:21:46
  • 1973

数据结构:树的存储——双亲表示法

/*********************************************** 程序:树的存储-----双亲表示法 完成者:小单 完成时间:2013年5月20日 ...
  • s634772208
  • s634772208
  • 2015-05-08 14:53:06
  • 2412

树的存储结构-双亲表示法-代码

树的存储结构:双亲表示法
  • m0_37779272
  • m0_37779272
  • 2017-05-09 10:19:45
  • 466

数据结构——树的双亲表示法

#include using namespace std; #define MAX_TREE_SIZE 100 typedef struct //节点结构 { char...
  • minyuanxiani
  • minyuanxiani
  • 2013-09-04 09:09:44
  • 2252
收藏助手
不良信息举报
您举报文章:C++ 树-双亲表示法、孩子表示法、双亲孩子表示法
举报原因:
原因补充:

(最多只允许输入30个字)