Câu trả lời:
Cây nhị phân: Cây nơi mỗi nút có tối đa hai lá
1
/ \
2 3
Cây tìm kiếm nhị phân: Được sử dụng để tìm kiếm . Cây nhị phân trong đó con trái chỉ chứa các nút có giá trị nhỏ hơn nút cha và ở đó con phải chỉ chứa các nút có giá trị lớn hơn hoặc bằng cha mẹ.
2
/ \
1 3
Cây nhị phân là một dạng cây chuyên dụng có hai con (con trái và con phải). Nó chỉ đơn giản là biểu diễn dữ liệu trong cấu trúc Tree
Cây tìm kiếm nhị phân (BST) là một loại cây nhị phân đặc biệt tuân theo các điều kiện sau:
Cây nhị phân được tạo thành từ các nút, trong đó mỗi nút chứa con trỏ "trái", con trỏ "phải" và phần tử dữ liệu. Con trỏ "root" trỏ đến nút trên cùng trong cây. Các con trỏ bên trái và bên phải đệ quy trỏ đến các "cây con" nhỏ hơn ở hai bên. Một con trỏ null đại diện cho cây nhị phân không có phần tử - cây trống. Định nghĩa đệ quy chính thức là: cây nhị phân hoặc trống (được biểu thị bằng con trỏ null) hoặc được tạo bởi một nút duy nhất, trong đó con trỏ bên trái và bên phải (định nghĩa đệ quy phía trước) mỗi điểm đến cây nhị phân.
Cây tìm kiếm nhị phân (BST) hoặc "cây nhị phân có thứ tự" là một loại cây nhị phân trong đó các nút được sắp xếp theo thứ tự: đối với mỗi nút, tất cả các phần tử trong cây con bên trái của nó ít hơn cho nút (<) và tất cả các phần tử trong cây con bên phải của nó lớn hơn nút (>).
5
/ \
3 6
/ \ \
1 4 9
Cây được hiển thị ở trên là cây tìm kiếm nhị phân - nút "gốc" là 5 và các nút cây con bên trái của nó (1, 3, 4) là <5 và các nút cây con bên phải của nó (6, 9) là> 5. Theo cách đệ quy, mỗi cây con cũng phải tuân theo ràng buộc của cây tìm kiếm nhị phân: trong cây con (1, 3, 4), 3 là gốc, 1 <3 và 4> 3.
Coi chừng từ ngữ chính xác trong các vấn đề - một "cây tìm kiếm nhị phân" khác với "cây nhị phân".
Như mọi người ở trên đã giải thích về sự khác biệt giữa cây nhị phân và cây tìm kiếm nhị phân, tôi chỉ thêm cách kiểm tra xem cây nhị phân đã cho có phải là cây tìm kiếm nhị phân hay không.
boolean b = new Sample().isBinarySearchTree(n1, Integer.MIN_VALUE, Integer.MAX_VALUE);
.......
.......
.......
public boolean isBinarySearchTree(TreeNode node, int min, int max)
{
if(node == null)
{
return true;
}
boolean left = isBinarySearchTree(node.getLeft(), min, node.getValue());
boolean right = isBinarySearchTree(node.getRight(), node.getValue(), max);
return left && right && (node.getValue()<max) && (node.getValue()>=min);
}
Hy vọng nó sẽ giúp bạn. Xin lỗi nếu tôi chuyển hướng từ chủ đề vì tôi cảm thấy đáng để đề cập đến vấn đề này ở đây.
Cây nhị phân là viết tắt của cấu trúc dữ liệu được tạo thành từ các nút chỉ có thể có hai tham chiếu con .
Mặt khác, Cây tìm kiếm nhị phân ( BST ) là một dạng cấu trúc dữ liệu Binary Tree đặc biệt trong đó mỗi nút có giá trị tương đương và các con có giá trị nhỏ hơn được gắn vào các con có giá trị lớn hơn và bên trái được gắn vào bên phải.
Do đó, tất cả các BST đều là Cây nhị phân, tuy nhiên chỉ một số Cây nhị phân cũng có thể là BST . Thông báo rằng BST là tập con của Cây nhị phân .
Vì vậy, Cây nhị phân có cấu trúc dữ liệu chung hơn Cây tìm kiếm nhị phân . Và bạn cũng phải thông báo rằng Cây tìm kiếm nhị phân là một cây được sắp xếp trong khi không có bộ quy tắc nào cho Cây nhị phân chung .
Một Binary Tree
trong đó là không một BST
;
5
/ \
/ \
9 2
/ \ / \
15 17 19 21
Một Binary Search Tree cũng là một cây nhị phân ;
50
/ \
/ \
25 75
/ \ / \
20 30 70 80
Cũng thông báo rằng cho bất kỳ nút cha trong BST ;
Tất cả các nút bên trái có giá trị nhỏ hơn giá trị của nút cha. Trong ví dụ trên, các nút có giá trị {20, 25, 30} đều nằm ở bên trái ( con cháu bên trái ) là 50, nhỏ hơn 50.
Tất cả các nút bên phải có giá trị lớn hơn giá trị của nút cha. Trong ví dụ trên, các nút có giá trị {70, 75, 80} đều nằm ở bên phải ( con cháu bên phải ) là 50, lớn hơn 50.
Không có quy tắc nào như vậy đối với Binary Tree Node. Quy tắc duy nhất cho Binary Tree Node là có hai con để nó tự giải thích rằng tại sao gọi là nhị phân .
Cây tìm kiếm nhị phân là một loại cây nhị phân đặc biệt thể hiện thuộc tính sau: đối với bất kỳ nút n nào, mọi giá trị của nút con cháu trong cây con bên trái của n đều nhỏ hơn giá trị của n và mọi giá trị của nút con cháu trong cây con bên phải là lớn hơn giá trị của n.
Cây nhị phân
Cây nhị phân có thể là bất cứ thứ gì có 2 con và 1 bố mẹ. Nó có thể được triển khai dưới dạng danh sách hoặc mảng được liên kết hoặc với API tùy chỉnh của bạn. Khi bạn bắt đầu thêm các quy tắc cụ thể hơn vào nó, nó sẽ trở thành cây chuyên dụng hơn . Thực hiện phổ biến nhất được biết đến là, thêm các nút nhỏ hơn ở bên trái và lớn hơn ở bên phải.
Ví dụ, cây nhị phân có nhãn có kích thước 9 và chiều cao 3, với nút gốc có giá trị là 2. Cây không cân bằng và không được sắp xếp . https://en.wikipedia.org/wiki/Binary_tree
Ví dụ, trong cây bên trái, A có 6 con {B, C, D, E, F, G}. Nó có thể được chuyển đổi thành cây nhị phân ở bên phải.
Tìm kiếm nhị phân
Tìm kiếm nhị phân là kỹ thuật / thuật toán được sử dụng để tìm mục cụ thể trên chuỗi nút. Tìm kiếm nhị phân hoạt động trên các mảng được sắp xếp .
Tìm kiếm nhị phân so sánh giá trị đích với phần tử ở giữa của mảng; nếu chúng không bằng nhau, một nửa trong đó mục tiêu không thể nói dối bị loại bỏ và tìm kiếm tiếp tục ở nửa còn lại cho đến khi thành công hoặc nửa còn lại trống. https://en.wikipedia.org/wiki/Binary_search_alacticm
Một cây đại diện cho tìm kiếm nhị phân . Mảng đang được tìm kiếm ở đây là [20, 30, 40, 50, 90, 100] và giá trị đích là 40.
Cây tìm kiếm nhị phân
Đây là một trong những triển khai của cây nhị phân. Đây là chuyên ngành để tìm kiếm .
Cấu trúc dữ liệu cây tìm kiếm nhị phân và cây B dựa trên tìm kiếm nhị phân .
Cây tìm kiếm nhị phân (BST), đôi khi được gọi là cây nhị phân được sắp xếp hoặc sắp xếp, là một loại thùng chứa cụ thể : cấu trúc dữ liệu lưu trữ "vật phẩm" (như số, tên, v.v.) trong bộ nhớ. https://en.wikipedia.org/wiki/Binary_search_tree
Cây tìm kiếm nhị phân có kích thước 9 và độ sâu 3, với 8 ở gốc. Những chiếc lá không được vẽ.
Và cuối cùng là lược đồ tuyệt vời để so sánh hiệu suất của các cấu trúc dữ liệu và thuật toán nổi tiếng được áp dụng:
Hình ảnh được lấy từ Thuật toán (Phiên bản thứ 4)
Để kiểm tra xem có hay không Cây nhị phân cụ thể là Cây tìm kiếm nhị phân ở đây là Cách tiếp cận thay thế.
Traverse Tree In Inorder Fashion (ví dụ: Left Left -> Parent -> Right Child), Lưu trữ dữ liệu nút được chuyển đổi trong một biến tạm thời cho phép nói tạm thời , ngay trước khi lưu trữ vào temp , Kiểm tra dữ liệu của Node hiện tại có cao hơn trước hay không . Sau đó, chỉ cần phá vỡ nó, Cây không phải là Cây tìm kiếm nhị phân khác đi qua cho đến khi kết thúc.
Dưới đây là một ví dụ với Java:
public static boolean isBinarySearchTree(Tree root)
{
if(root==null)
return false;
isBinarySearchTree(root.left);
if(tree.data<temp)
return false;
else
temp=tree.data;
isBinarySearchTree(root.right);
return true;
}
Duy trì biến tạm thời bên ngoài
Trong cây tìm kiếm nhị phân, tất cả các nút được sắp xếp theo một thứ tự cụ thể - các nút ở bên trái của nút gốc có giá trị nhỏ hơn gốc của nó và tất cả các nút ở bên phải của nút có giá trị lớn hơn giá trị của nguồn gốc.
Một cây có thể được gọi là cây nhị phân khi và chỉ khi số lượng con tối đa của bất kỳ nút nào là hai.
Một cây có thể được gọi là cây tìm kiếm nhị phân khi và chỉ khi số lượng con tối đa của bất kỳ nút nào là hai và con trái luôn nhỏ hơn con phải.