Loading...

树的基本操作

2024-12-06
0
-
- 分钟
|

树的基本操作

#include<bits/stdc++.h>using namespace std;// 树是有限数据元素的集合 typedef struct Node{  int data;   Node* lchild;   Node* rchild;}*bitTree;  // 建立带头结点二叉树bitTree initTree(){    Node* bt;   bt = new Node();    bt->lchild = NULL;  bt->rchild = NULL;  return bt;} // 不带头//bt = NULL // 在二叉树bt的parent所指节点和其左子树之间插入节点bitTree insertL(bitTree bt, int x, bitTree parent){    Node* p;    if(parent == NULL){     return NULL;    }   p = new Node(); p->data = x;    p->lchild = NULL;   p->rchild = NULL;   if(parent->lchild == NULL) parent->lchild = p;  else {      p->lchild = parent->lchild;     parent->lchild = p; }   return bt;} // 在bt中删除parent的左子树bitTree deleteL(bitTree bt, bitTree parent){ Node* p;    if(parent == NULL || parent->lchild == NULL){       return NULL;    }   p = parent->lchild; parent->lchild = NULL;  free(p);    return bt;}  // 树的遍历void perOrder(bitTree bt){  if(bt == NULL){     return; } //    Visit(bt);  perOrder(bt->lchild);   perOrder(bt->rchild);} // 中序,后序略  // 非递归遍历:  //void NRPreOrder(bitTree bt){//   Node* stack[100], p;//  int top = 1;//  if(bt == NULL) return;//    p = bt;//   while(!(p == NULL && top == -1)){//     Visit(p);//     top ++;//       stack[top] = p;//       p = p->lchild;//    }// if(top<0) return;// else{//     p = stack[p];//     top--;//        p = p->rchild;//    }//}  // 队列层次遍历void levelOrder(bitTree bt){ Node* queue[100];   int front, rear;    if(bt == NULL) return;  front = -1; rear = 0;   queue[rear] = bt;   while(front != rear){       front++;//      Visit(queue[front]);        if(queue[front]->lchild != NULL){           rear++;         queue[rear] = queue[front]->lchild;     }       if(queue[front]->rchild != NULL){           rear++;         queue[rear] = queue[front]->rchild;     }   }}  // 递归计算树的层数(深度)int getTreeDepth(Node* root) {    if (root == NULL) return 0;  // 空树深度为0     // 递归计算左右子树的深度    int leftDepth = getTreeDepth(root->lchild);    int rightDepth = getTreeDepth(root->rchild);     // 返回左右子树深度的最大值加1    return max(leftDepth, rightDepth) + 1;} int main(){  }

文章目录