TNode nodes[MaxSize];//结点数据域intn;//树中的结点个数}Tree;//树的孩子表示结构 ③孩子兄弟表示法:分别指向孩子结点和兄弟结点,其结点结构为: typedefcharElemType; typedefstructCSNode{ ElemType data;//该结点的数据域structCSNode *firstchild,*rightsib;//指向该结点的第一个孩子结点和该结点的右兄弟...
}CHILD_PARENT_TREE_ROOT_NODENUM_DATA; 4.2 构建树 OP_STATUSBuildChildParentTree(CHILD_PARTENT_TREE *CPTree,constCHILD_PARENT_TREE_ROOT_NODENUM_DATA *CPTreeRootNodeNum,constCHILD_PARENT_TREE_NODE_DATA *CPTreeData) CPTree表示树,CPTreeRootNodeNum表示根的位置和结点数量,CPTreeData表示结点的数据。
树的孩子兄弟表示法是一种用来表示树结构的数据结构,它用一个数组来表示树中的节点,每个节点有两个指针,一个指向它的孩子节点,另一个指向它的兄弟节点。 这种表示法的优点是可以快速地查找某个节点的孩子节点和兄弟节点,缺点是需要额外的空间来存储指针,而且查找父节点的时候需要从根节点开始遍历,效率较低。发布于...
将根结点用右指针连接,若有树X,Y,Z(表示结点树)转换为二叉树,则以X的根结点作为根结点,用右指针连接Y,然后用Y的右指针连接Z,则右子树总数为Y+Z,左子树总数为X-1。 ② 二叉树???森林 反之,将右子树从最底层分离,一直到根节点 ③树???二叉树 将结点的孩子放在左子树,将结点的兄弟放在右子树。 二、...
树的要求 子树是不相交的 除了根结点之外,每个结点有且仅有一个父结点 一个N个结点的树有N-1条边 树的表示 相对于线性表,树的结构就复杂很多了。最常用的表示方法——孩子兄弟表示法。 现实应用 文件系统的目录树, 树在实际当中,不太作为存储数据这个角度去用,因为意义不是很大。
但如果是特定在二叉树的情境下,这个多重表示法是比较适合。由于多重表表示法的缺点,引申出 孩子表示法:把每个结点的孩子结点排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空。然后n个头指针又组成一个线性表,采用顺序存储结构,存放一个一维数组中。
1.3树的代码表示 表示树的方式有很多种,比如下面这种 #define N 5//指定树的度为5structTreeNode{intdata;structTreeNode*subs[N];//用指针数组存放孩子节点的指针}; 但这种方法不够优,给大家展示一个用的最广泛的方法——孩子兄弟表示法 typedefintDataType;structNode{structNode*_firstChild1;// 第一个孩...
采用递归求解,先求左子树的高度和右子树的高度,然后整棵树的高度就是两颗子树高度的最大值+1。假定叶子节点高度为0。代码如下:struct node { int val; struct node* left; struct node* right;};int height(struct node* root){ int h, lh, rh; if ( root == NULL) ...
树结构相对线性表比较复杂,要存储表示起来比较麻烦,不仅需要保存值域,还要保存结点和结点之间的关系;实际中树有很多种表示方式如:双亲表示法,孩子表示法、孩子双亲表示法以及孩子兄弟表示法等;其中最常用的表示法为:孩子兄弟表示法 (左孩子右兄弟表示法)。