cay nhi phan tim kiem 1

Viết hàm xuất các giá trị trong cây

Code: 

#include <stdio.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

// Viết hàm xuất các giá trị trong cây

void Xuat(Tree c)

{

if (c!=NULL)

{

if (c->pLeft != NULL)

Xuat(c->pLeft);

printf("%4d", c->iX);

if (c->pRight != NULL)

Xuat(c->pRight);

}

}

void main()

{

Tree c = NULL;

Nhap(c);

printf("Xuat cay LNR (Tang dan): ");

Xuat(c);

}

Viết hàm xuất các giá trị chẵn trong cây

Code: 

#include <stdio.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

//871 Viết hàm xuất các giá trị chẵn trong cây

void Xuat(Tree c)

{

if (c!=NULL)

{

if (c->pLeft != NULL)

Xuat(c->pLeft);

if (c->iX % 2 == 0)

printf("%4d", c->iX);

if (c->pRight != NULL)

Xuat(c->pRight);

}

}

void main()

{

Tree c = NULL;

Nhap(c);

printf("Xuat gia tri chan theo LNR (Tang dan): ");

Xuat(c);

}

viết xuất địa chỉ các nút trên cây có giá trị (khoá) lớn hơn x và nhỏ hơn y

Code: 

#include <stdio.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

//872 Viết hàm xuất địa chỉ các nút trên cây có giá trị (Khóa) lớn hơn X và nhỏ hơn Y

void Xuat(Tree c, int x, int y)

{

if (c!=NULL)

{

if (c->pLeft != NULL)

Xuat(c->pLeft,x,y);

if (x<c->iX && c->iX<y)

printf("

%4d", &c);

if (c->pRight != NULL)

Xuat(c->pRight,x,y);

}

}

void NhapXY(int &x, int &y)

{

printf("Nhap x: ");

scanf_s("%d",&x);

printf("Nhap y: ");

scanf_s("%d",&y);

}

void main()

{

Tree c = NULL;

Nhap(c);

int x,y;

NhapXY(x,y);

printf("

Xuat dia chi < x va > y: ");

Xuat(c,x,y);

}

Viết hàm xuất các số hoàn thiện trong cây

Code: 

#include <stdio.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

//873 Viết hàm xuất các số hoàn thiện trong cây

bool SoHoanThien(int x)

{

int s=0;

for (int i=1; i<x; i++)

if (x%i==0)

s+=i;

if (s==x)

return true;

return false;

}

void Xuat(Tree c)

{

if (c!=NULL)

{

if (c->pLeft != NULL)

Xuat(c->pLeft);

if (SoHoanThien(c->iX))

printf("%4d", c->iX);

if (c->pRight != NULL)

Xuat(c->pRight);

}

}

void main()

{

Tree c = NULL;

Nhap(c);

printf("Xuat cac so hoan thien theo LNR: ");

Xuat(c);

}

Viết hàm xuất tất cả các nút trên tầng thứ k của cây

Code: 

#include <stdio.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

//874* Viết hàm xuất các nút trên tầng thứ k của cây

void Xuat(Tree c, int k)

{

if (c!=NULL)

{

k--;

if (c->pLeft != NULL)

Xuat(c->pLeft,k);

if (k==0)

printf("%4d", c->iX);

if (c->pRight != NULL)

Xuat(c->pRight,k);

}

}

void NhapK(int &k)

{

printf("

Nhap tang thu k: ");

scanf_s("%d",&k);

}

void main()

{

Tree c = NULL;

Nhap(c);

int k;

NhapK(k);

printf("

Xuat cac gia tri tang thu k cua cay theo LNR: ");

Xuat(c,k+1);

}

Viết hàm xuất tất cả các nút trên cây theo thứ tự từ tầng 0 đến tầng h-1 củacây (với h là chiều cao của cây)

Code: 

#include <stdio.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

//875* Viết hàm xuất các nút trên cây theo thứ tự tầng 0 đến tầng h-1 của cây (với h là chiều cao của cây)

int ChieuCaoCay(Tree c)

{

if (c == NULL)

return 0;

int a = ChieuCaoCay(c->pLeft);

int b = ChieuCaoCay(c->pRight);

int max = (a>b)?a:b;

return 1 + max;

}

void XuatTheoTangK(Tree c, int k)

{

if (c!=NULL)

{

k--;

if (c->pLeft != NULL)

XuatTheoTangK(c->pLeft,k);

if (k==0)

printf("%4d", c->iX);

if (c->pRight != NULL)

XuatTheoTangK(c->pRight,k);

}

}

void Xuat(Tree c)

{

int h = ChieuCaoCay(c);

printf ("

Chieu cao cay: %d",h);

for (int i=0; i<=h-1; i++)

{

printf("

tang %d :", i);

XuatTheoTangK(c,i+1);

}

}

void main()

{

Tree c = NULL;

Nhap(c);

printf("

Xuat cac gia tri theo thu tu tang 0 -> h-1: ");

Xuat(c);

}

Đếm số lượng nút có đúng 1 con

Code: 

#include <stdio.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

void Xuat(Tree c)

{

if (c!=NULL)

{

if (c->pLeft != NULL)

Xuat(c->pLeft);

printf("%4d", c->iX);

if (c->pRight != NULL)

Xuat(c->pRight);

}

}

//876 Đếm số lượng nút có đúng 1 con

int Dem(Tree c)

{

if (c!=NULL)

{

int a = Dem(c->pLeft);

int b = Dem(c->pRight);

if ((c->pLeft != NULL && c->pRight == NULL) || (c->pLeft == NULL && c->pRight != NULL))

return 1 + a + b;

return a + b;

}

return 0;

}

void main()

{

Tree c = NULL;

Nhap(c);

printf("

Xuat cay nhi phan LNR: ");

Xuat(c);

printf("

Dem so luong nut co dung 1 con: %d", Dem(c));

}

Đếm số lượng nút có đúng 2 con

Code: 

#include <stdio.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

void Xuat(Tree c)

{

if (c!=NULL)

{

if (c->pLeft != NULL)

Xuat(c->pLeft);

printf("%4d", c->iX);

if (c->pRight != NULL)

Xuat(c->pRight);

}

}

//877 Đếm số lượng nút có đúng 2 con

int Dem(Tree c)

{

if (c!=NULL)

{

int a = Dem(c->pLeft);

int b = Dem(c->pRight);

if (c->pLeft != NULL && c->pRight != NULL)

return 1 + a + b;

return a + b;

}

return 0;

}

void main()

{

Tree c = NULL;

Nhap(c);

printf("

Xuat cay nhi phan LNR: ");

Xuat(c);

printf("

Dem so luong nut co dung 2 con: %d", Dem(c));

}

Đếm số lượng nút chẵn

Code: 

#include <stdio.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

void Xuat(Tree c)

{

if (c!=NULL)

{

if (c->pLeft != NULL)

Xuat(c->pLeft);

printf("%4d", c->iX);

if (c->pRight != NULL)

Xuat(c->pRight);

}

}

//878 Đếm số lượng nút chẵn

int Dem(Tree c)

{

if (c!=NULL)

{

int a = Dem(c->pLeft);

int b = Dem(c->pRight);

if (c->iX%2==0)

return 1 + a + b;

return a + b;

}

return 0;

}

void main()

{

Tree c = NULL;

Nhap(c);

printf("

Xuat cay nhi phan LNR: ");

Xuat(c);

printf("

Dem so luong nut chan: %d", Dem(c));

879 Đếm số lượng nút lá mà thông tin tại nút đó là giá trị chẵn

int Dem(Tree c)

{

void main()

{

Tree c = NULL;

Nhap(c);

printf("

Xuat cay nhi phan LNR: ");

Xuat(c);

printf("

Dem so luong nut la ma gia tri chan: %d", Dem(c));

}

Đếm số lượng nút có đúng 1 con mà thông tin tại nút đó là số nguyên tố

Code: 

#include <stdio.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

void Xuat(Tree c)

{

if (c!=NULL)

{

if (c->pLeft != NULL)

Xuat(c->pLeft);

printf("%4d", c->iX);

if (c->pRight != NULL)

Xuat(c->pRight);

}

}

//880 Đếm số lượng nút có đúng 1 con mà thông tin tại đó là số nguyên tố

bool SoNguyenTo(int n)

{

if (n<=1)

return 0;

for (int i=2; i<n; i++)

if (n%i == 0)

return 0;

return 1;

}

int Dem(Tree c)

{

if (c!=NULL)

{

int a = Dem(c->pLeft);

int b = Dem(c->pRight);

if (SoNguyenTo(c->iX))

if ((c->pLeft!=NULL && c->pRight==NULL) || (c->pLeft==NULL && c->pRight!=NULL))

return 1 + a + b;

return a + b;

}

return 0;

}

void main()

{

Tree c = NULL;

Nhap(c);

printf("

Xuat cay nhi phan LNR: ");

Xuat(c);

printf("

Dem so luong nut co dung 1 con va gia tri la so nguyen to: %d", Dem(c));

}

Đếm số lượng nút có đúng 2 con mà thông tin tại nút đó là số chính phương

Code: 

#include <stdio.h>

#include <math.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

void Xuat(Tree c)

{

if (c!=NULL)

{

if (c->pLeft != NULL)

Xuat(c->pLeft);

printf("%4d", c->iX);

if (c->pRight != NULL)

Xuat(c->pRight);

}

}

//881 Đếm số lượng nút có đúng 2 con mà thông tin tại đó là số chính phương

bool SoChinhPhuong(int n)

{

if (n<=0)

return 0;

int s = sqrt((double)n);

if (s*s == n)

return 1;

return 0;

}

int Dem(Tree c)

{

if (c!=NULL)

{

int a = Dem(c->pLeft);

int b = Dem(c->pRight);

if (SoChinhPhuong(c->iX))

if (c->pLeft!=NULL && c->pRight!=NULL)

return 1 + a + b;

return a + b;

}

return 0;

}

void main()

{

Tree c = NULL;

Nhap(c);

printf("

Xuat cay nhi phan LNR: ");

Xuat(c);

printf("

Dem so luong nut co dung 2 con va gia tri la so chinh phuong: %d", Dem(c));

}

Đếm số lượng nút trên tầng thứ k của cây

Code: 

#include <stdio.h>

#include <math.h>

struct Node

{

Node* pLeft;

Node* pRight;

int iX;

};

typedef Node* Tree;

Node* TaoNode(int X)

{

Node* p = new Node;

if (p == NULL)

return NULL;

p->pLeft = NULL;

p->pRight = NULL;

p->iX=X;

return p;

}

void ThemNodeVaoCay(Node* p, Tree &c)

{

if (c == NULL)//nếu cây rỗng

c = p;

else //cây khác rỗng

{

if (p->iX < c->iX)

ThemNodeVaoCay(p,c->pLeft);

else if (p->iX > c->iX)

ThemNodeVaoCay(p,c->pRight);

else

return;

}

}

void Nhap(Tree &c)

{

int chon = 0;

do

{

int x;

printf("

Nhap x: ");

scanf_s("%d",&x);

Node* p = TaoNode(x);

ThemNodeVaoCay(p,c);

printf("Muon nhap thong tin tiep ko? 1: co, 0: ko ~~>");

scanf_s("%d",&chon);

}while(chon);

}

void Xuat(Tree c)

{

if (c!=NULL)

{

if (c->pLeft != NULL)

Xuat(c->pLeft);

printf("%4d", c->iX);

if (c->pRight != NULL)

Xuat(c->pRight);

}

}

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: