Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để tìm tổ tiên chung thấp nhất trong cây tìm kiếm nhị phân

Cây nhị phân có nhiều nhất hai con, được chỉ định là con bên trái và con bên phải. Đây là một chương trình C ++ để tìm tổ tiên chung thấp nhất trong Cây nhị phân.

Thuật toán

 Begin Tạo cấu trúc n để khai báo dữ liệu d, một con trỏ con trái l và một con trỏ con phải r. Tạo một hàm để tạo newnode. Gọi một hàm LCA () để Tìm tổ tiên chung thấp nhất trong cây nhị phân:Giả sử có nút n1 và n2 trong cây. Nếu gốc là null, sau đó trả về. Nếu root không phải là null, có hai trường hợp. a) Nếu cả n1 và n2 đều nhỏ hơn gốc thì LCA nằm ở bên trái. b) Nếu cả n1 và n2 đều lớn hơn gốc, thì LCA nằm ở bên phải. 

Mã mẫu

 #include  using namespace std; struct n {int d; struct n * l, * r;} * p =NULL; struct n * newnode (int d) {p =new n; p-> d =d; p-> l =p-> r =NULL; return (p);} struct n * LCA (struct n * root, int n1, int n2) {if (root ==NULL) return NULL; if (root-> d> n1 &&root-> d> n2) return LCA (root-> l, n1, n2); if (root-> d  d  r, n1, n2); return root;} int main () {n * root =newnode (9); root-> l =newnode (7); root-> r =newnode (10); root-> l-> l =newnode (6); root-> r-> l =newnode (8); root-> r-> r =newnode (19); root-> r-> l-> r =newnode (4); root-> r-> r-> r =newnode (20); int n1 =20, n2 =4; struct n * t =LCA (gốc, n1, n2); cout <<"Tổ tiên chung thấp nhất của 20 và 4 là:" < d < d < 

Đầu ra

 Tổ tiên chung thấp nhất của 20 và 4 là:9 Tổ tiên chung thấp nhất của 7 và 6 là:7