Tính tổng giá trị của các node của cây nhị phân trong Java
Tính tổng giá trị các node của cây nhị phân bằng ngôn ngữ Java. Đây là bài tập căn bản giúp các bạn nắm vững kiến thức về Tree.
Dưới đây chúng ta sẽ thực hiện chương trình tính tổng giá trị các node của cây nhị phân bằng ngôn ngữ Java.
Cách tính tổng giá trị các node của cây nhị phân trong Java
Trong phần này, freetuts sẽ hướng dẫn các bạn về thuật toán cũng như cách triển khai bài toán này trong Java.
Để hoàn thành nhiệm vụ chúng ta cần tính tổng các node có trong cây nhị phân. Đầu tiên, chúng ta sẽ đi qua cây con bên trái và tính tổng các node có trong cây con bên trái. Tương tự, chúng ta tính tổng các node có trong cây con bên phải và tính tổng bằng cách cộng dữ liệu của gốc.
Bài viết này được đăng tại [free tuts .net]
Đối với cây đã cho, tổng các node của cây nhị phân sẽ là 1 + 2 + 5 + 8 + 6 + 9 = 31.
Các bước của thuật toán trên như sau:
Bước 1: Khởi tạo class Node có 3 thuộc tính: data, Node left và Node right
Bước 2: root = null
Bước 3: calculateSum() sẽ tính tổng giá trị các node có trong cây nhị phân ạ
- Nó kiểm tra xem rootcó rỗng không, có nghĩa là cây rỗng.
- Nếu cây không trống, duyệt qua cây con bên trái, tính tổng các node và lưu trữ nó trong sumLeft.
- Sau đó, duyệt qua cây con bên phải, tính tổng các node và lưu trữ nó trong sumRight.
- Cuối cùng, tính tổng
sum = temp.data + sumLeft + sumRight.
- Cùng freetuts triển khai chương trình dưới đây để có thể hiểu hơn về yêu cầu bài toán.
Chương trình tính tổng giá trị các node của cây nhị phân trong Java
Dưới đây là chương trình mà freetuts đã viết, mời các bạn tham khảo:
/** * Học lập trình Java miễn phí tại freetuts.net * * @author freetuts */ public class SumOfNodes { public static class Node { int data; Node left; Node right; public Node(int data) { this.data = data; this.left = null; this.right = null; } } public Node root; public SumOfNodes() { root = null; } public int calculateSum(Node temp) { int sum, sumLeft, sumRight; sum = sumRight = sumLeft = 0; if (root == null) { System.out.println("Tree is empty"); return 0; } else { if (temp.left != null) { sumLeft = calculateSum(temp.left); } if (temp.right != null) { sumRight = calculateSum(temp.right); } sum = temp.data + sumLeft + sumRight; return sum; } } public static void main(String[] args) { SumOfNodes bt = new SumOfNodes(); bt.root = new Node(5); bt.root.left = new Node(2); bt.root.right = new Node(9); bt.root.left.left = new Node(1); bt.root.right.left = new Node(8); bt.root.right.right = new Node(6); System.out.println("Chương trình được đăng tại freetuts.net"); System.out.println("Tổng tất cả các node của cây nhị phần là: " + bt.calculateSum(bt.root)); } }
Kết quả:
Như vậy chúng ta đã thực hiện xong chương trình tính tổng giá trị các node của cây nhị phân trong Java. Chúc các bạn thực hiện thành công!!!