zoukankan      html  css  js  c++  java
  • 树的存储

    普通树

    普通树的存储有

    双亲存储表示法

    typedef struct
    {
        int data;
        int parent;
    }PTree[max_size];//P表示parent
    

    孩子链表存储表示法

    孩子链表和双亲存储表示法

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    //采用孩子和双亲节点法来存储树,这里是任意的树。
    #define max_Node 10
    
    typedef struct childNode {//双亲节点的孩子节点
    	char data;
    	childNode* nextChild;
    };
    typedef struct parentNode {//双亲节点
    	char data;
    	childNode*firstChild;//指向第一个孩子
    };
    typedef struct Tree{
    	parentNode node[max_Node];
    	char r;//根节点
    	int n;//节点个数
    }*TreePoint;
    
    
    

    孩子兄弟链表存储

    参考博文

    二叉树的链式存储

    二叉树的初始化和输出都可采用,先序遍历,中序遍历,后序遍历,采用递归的算法。
    

    先序为例

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    //二叉树的存储,初始化,输出
    char first[] = { 'A','B','#','#','C','D','#','#','E','F','#','#','G','#','#' };
    int index = 0;
    typedef struct BinTree {
    	BinTree*lchild;
    	BinTree*rchild;
    	char data;
    }*BinTreePoint;
    char getChar() {
    	if (first[index] != '') {
    		return first[index++];
    	}
    	return '&';//结尾标志
    }
    //先序遍历输入二叉树
    void createBinTree(BinTreePoint &binTreePoint) {
    	
    	char ch=getChar();
    	if (ch == '#') {
    		binTreePoint = NULL;
    
    	}
    	if(ch != '#') {
    		printf_s("单个字符为%c
    ", ch);
    		binTreePoint = (BinTreePoint)malloc(sizeof(BinTree));
    		if (binTreePoint == NULL) return ;
    		binTreePoint->data = ch;
    		createBinTree(binTreePoint->lchild);
    		createBinTree(binTreePoint->rchild);
    	}
    }
    //先序遍历输出二叉树
    void printBinTree(BinTreePoint&binTreePoint) {
    	
    	if (binTreePoint == NULL) {
    		return;
    	}
    
    	printf_s("%c", binTreePoint->data);
    	printBinTree(binTreePoint->lchild);
    
    	printBinTree(binTreePoint->rchild);
    }
    int main() {
    	BinTreePoint binTreePoint;
    	createBinTree(binTreePoint);
    
    	printf_s("%s
    ", "-----------------");
    	printBinTree(binTreePoint);
    	
    	system("pause");
    
    }
    

    参考链接

  • 相关阅读:
    browser浏览器类型判断
    泛型函数Func<>
    前台JS端排除重复录入数据方法(取值对比)
    判断字符串是否为空字符串
    Linq语法及用法
    new Array( ) 使用
    性能测试
    [排序N大件之]快速排序
    [排序N大件之]归并排序
    [排序N大件之]谢尔排序
  • 原文地址:https://www.cnblogs.com/lianggaoblogyuan/p/12618490.html
Copyright © 2011-2022 走看看