Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn Phí
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn PhíĐăng Nhập

VỮNG TIN - TIẾP BƯỚC - THÀNH CÔNG


descriptionCây tìm kiếm nhị phân - Đếm số nút trên cây EmptyCây tìm kiếm nhị phân - Đếm số nút trên cây

more_horiz
ĐẾM SỐ NÚT CỦA CÂY NHỊ PHÂN


Thuật toán đếm số nút của cây nhị phân:

Code:

//Dem so nut
int CountNode(Tree T) {
   if( T == NULL)
      return 0;
   else
      return 1 + CountNode(T->Left) + CountNode(T->Right);
}


CHƯƠNG TRÌNH MINH HỌA

Code:

/* Chuong trinh minh hoa cay nhi phan tim kiem */
#include "conio.h"
#include "stdio.h"

//Cau truc cua Node
typedef struct Node{
   int info;
   Node*Left;
   Node*Right;
}Node;
//Dinh nghia cay nhi phan
typedef Node * Tree;
//Khoi tao Node
Node *MakeNode(int x) {
   Node*p = new Node;
   p ->info = x;
   p ->Left = NULL;
   p ->Right = NULL;
   return p;
}
//Them 1 node vao cay tim kiem nhi phan
void InsertNode(Tree *T, Node *p) {
   if (p->info < (*T)->info ) {
      if((*T)->Left)
         InsertNode(&(*T)->Left,p);
      else
         (*T)->Left = p;
   }
   else
   if (p->info > (*T)->info){
      if((*T)->Right)
         InsertNode(&(*T)->Right,p);
      else
         (*T)->Right = p;
   }
}
//Thu tuc them node cho cay ban dau
void PushNode(Tree *T,int x) {
   Tree p = MakeNode(x);
   if (*T == NULL)
      *T = p;
   else
      InsertNode(&*T,p);
}
//Nhap cac Node vao cay
void InputTree(Tree *T) {
   int x;
   printf("Nhap vao cac phan tu trong cay nhi phan tim kiem.\n");
   printf("Nhap so 0 thi ket thuc:");
   do {
      scanf("%d",&x);
      if (x != 0)
         PushNode(&*T,x);
   } while(x != 0);
}
//Dem so nut
int CountNode(Tree T) {
   if( T == NULL)
      return 0;
   else
      return 1 + CountNode(T->Left) + CountNode(T->Right);
}
//Chuong trinh chinh
void main() {
   Tree T = NULL;   //Khoi tao cay ban dau
   int n;
   clrscr();
   InputTree(&T);
   printf("Chieu cao =  %d",CountNode(T));
   getch();
}

descriptionCây tìm kiếm nhị phân - Đếm số nút trên cây EmptyĐếm số nút lá trên cây

more_horiz

Code:

//Kiem tra  nut la
char IsLeaf(Node *p){
   return (p->Left == NULL) && (p->Right == NULL);
}
//Dem nut la
int CountLeaf(Tree T) {
   if(T == NULL)
      return 0;
   else
      if(IsLeaf(T))
         return 1;
      else
         return CountLeaf(T->Left) + CountLeaf(T->Right);
}
privacy_tip Permissions in this forum:
Bạn không có quyền trả lời bài viết
power_settings_newLogin to reply