root root ∧ IBA B∧ ∧DE ∧G∧ ∧G∧ (a)不带头结点的二叉树 (b)带头结点的二叉树 图8-10二叉链存储结构的二叉树
图8-10 二叉链存储结构的二叉树 root ∧ A B ∧ C ∧ D E ∧ F ∧ ∧ G ∧ ∧ ∧ root A B ∧ C ∧ D E ∧ F ∧ ∧ G ∧ ∧ ∧ (a)不带头结点的二叉树 (b)带头结点的二叉树
3.二叉树的仿真指针 二叉树的仿真指针存储结构是用数组存储二叉树中的结点 数组中每个结点除数据元素坷外,再增加仿真指针域用于仿 真常规指针建立二叉树中结点之间的关系。 data left Child rightchild 2 134 123456 ABCDEFG 156 -1 二叉树的仿真二叉链存储结构
3.二叉树的仿真指针 二叉树的仿真指针存储结构是用数组存储二叉树中的结点, 数组中每个结点除数据元素域外,再增加仿真指针域用于仿 真常规指针建立二叉树中结点之间的关系。 二叉树的仿真二叉链存储结构
8.3.2二又链结构的二叉树设计 typedef struct Node Data Type data; struct Node *left child: struct Node right child; BiTreenode; 初始化*/ void Initiate( BiTreeNode **root) t root=( BiTreeNode *)malloc(sizeof(BiTreeNode)); (root)->left Child= nUll; Croot)->right Child= NULL;
8.3.2二叉链结构的二叉树设计 typedef struct Node { DataType data; struct Node *leftChild; struct Node *rightChild; }BiTreeNode; /*初始化*/ void Initiate(BiTreeNode**root) { *root = (BiTreeNode *)malloc(sizeof(BiTreeNode)); (*root)->leftChild= NULL; (*root)->rightChild = NULL; }
/*左子树插入结点*/ BiTreeNode *InsertLeftNode (bitreeNode *curr, Data Type x) ilreeNode *s* if(curr= nULL return nULL; t=curr->leftchild s= BiTreenode )malloc(sizeof(bitreenode)); s->data=x: S->leftchild= t: s->right child= null: curr->left child=s: return curr->leftchild;
/*左子树插入结点*/ BiTreeNode*InsertLeftNode(BiTreeNode *curr, DataType x) { BiTreeNode *s, *t; if(curr == NULL) return NULL; t = curr->leftChild; s = (BiTreeNode *)malloc(sizeof(BiTreeNode)); s->data = x; s->leftChild= t; s->rightChild = NULL; curr->leftChild = s; return curr->leftChild; }
八删除左子树*/ BiTreeNode *DeleteleftTree(BitreeNode*curr) if(curr==nULL curr->left Child== NULl return NULL; Destroy(&curr->left child); curr->left Child= nULL; return curr;
/*删除左子树*/ BiTreeNode*DeleteLeftTree(BiTreeNode *curr) { if(curr == NULL|| curr->leftChild == NULL) return NULL; Destroy(&curr->leftChild); curr->leftChild = NULL; return curr; }