01/10/2018, 09:19
Hỏi về cây AVL C++
Mình đang làm bài tập c++ về cây AVL,làm xong bài 1 sang bài 2 thì có cụm từ " thêm con trỏ trỏ tới nút cha" , trước giờ thấy mỗi con trỏ rẽ nhánh trái phải chứ chưa thấy con trỏ trỏ tới nút cha
ACE ai biết chỉ mình vụ này với
Nếu được thì mình xin 1 đoạn code minh họa không thì thuật toán hoặc đơn giản là keyword thì cũng ok lắm rồi
Cảm ơn mọi người
Bài liên quan
Bạn này thích trồng cây nhỉ…
Hì hì bài tập mà,cơ mà chưa hiểu làm sao mỗi lần chạy ( ví dụ nhập dữ liệu từ file ) nút cha được cật nhật bạn nhỉ
Thì khi nào tạo hoặc di chuyển
child-node
thì đồng thời cập nhậtparent-node
cho nó thôi.Thực ra là với cậy AVL thì không thấy việc lưu lại
parent-node
có ý nghĩa lắm trừ việc phải cân bằng lại cây. Vì khi cân bằng lại cây thì các node bị thay đổi vị trí dẫn đến việc đệ quy không đạt được hiệu quả nên cần biếtparent-node
để biết cách truy vấn ngược lên trên thôi.Anh có thể cho em 1 đoạn code ngắn được không,em vẫn mập mờ quá
Dùng mã giả code cho dễ hiểu nhé. Ví dụ cho bài toán tìm số lớn nhất nhỏ hơn node cho trước:
Thằng node start là thằng
d
thằnge
nằm bên trái sẽ lớn hơnd
. Tương tự thằngb
vàc
cũng lớn hơnd
. Tìm ra thằnga
nhỏ hơnd
.Nếu duyệt tiếp thằng
right
thì thằngright
lớn hơn thằngb
do nếub
lớn hơnright
thì nó đã nằm bên phải thằngright
rồi. Điều đó kéo theo làright
lớn hơnd
.Nếu duyệt tiếp thằng
left
thì thằng này sẽ nhỏ hơn thằnga
rồi nêna
chính là thằng cần tìm.Đấy ví dụ bài toán này không duyệt từ
root
thì không có parent- node thì không làm được. Còn nếu duyệt từ root thì đơn giản thôi. Chạy tìm mút mùa ra được thằngd
xong tìm ngược lại. Chưa kể input làd
thì cũng không tìm được chỗroot
ở đâu cả.Lâu lâu làm mấy bài này đau não quá.
Cảm ơn anh rất nhiều