Specify the correct implementation of in-order traverse algorithm for binary trees.

4 phương ánCó giải thích

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở

Đáp án đúng: "

Lời giải
void inOrder(Node p) {
  if (p != null) {
    inOrder(p.left);
    visit(p);
    inOrder(p.right);
  }
}

". Duyệt giữa cần đúng hai điều: trình tự con trái, thăm gốc, con phải; và điều kiện dừng khi gặp cây rỗng, vì mỗi lá vẫn gọi tiếp vào hai liên kết null. Bản này kiểm p khác null trước rồi mới đi xuống nên đệ quy chắc chắn kết thúc. Phương án "

Lời giải
void inOrder(Node p) {
  inOrder(p.left);
  visit(p);
  inOrder(p.right);
}

" không có điểm dừng nào, lời gọi đầu tiên đã lao xuống bên trái mãi và sinh lỗi truy cập null hoặc tràn ngăn xếp. Phương án "

Lời giải
void inOrder(Node p) {
  if (p == null) {
    inOrder(p.left);
    visit(p);
    inOrder(p.right);
  }
}

" đảo ngược điều kiện: với cây không rỗng nó chẳng làm gì, còn khi p là null nó lại đọc p.left nên lỗi ngay. Phương án "

Lời giải
void inOrder(Node p) {
  if (p != null) {
    visit(p);
    inOrder(p.left);
    inOrder(p.right);
  }
}

" dừng đúng nhưng thăm gốc trước hai con, đó là duyệt trước, và trên cây tìm kiếm nhị phân nó không cho dãy tăng dần.

Cùng phần 4

Xuất hiện trong 1 bộ đề