cuốn sách gpt4 ai đã làm

c++ - 获取用数字字符串表示的树中的所有直接父/子

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 05:26:20 27 4
mua khóa gpt4 Nike

Tôi có một chuỗi số đại diện cho một cái cây (tôi không biết nó có tên chính thức không):

012323301212

Ví dụ trên đại diện cho 2 cây. Gốc được biểu thị bằng 0. Con cháu trực tiếp của gốc là "1", con cháu trực tiếp của "1" là "2", v.v. Tôi cần nhóm chúng thành một cây con bao gồm cha mẹ và con trực tiếp của nó. Vì vậy, những điều trên sẽ được chia thành...

01 122 23 233 011 12 12

Tôi đang nghĩ một cách tiếp cận khả thi là xây dựng cấu trúc cây từ các chuỗi, sau đó truy cập từng nút và tạo cây con cũng như các cây con trực tiếp của nó (nếu có), nhưng điều này có vẻ tương đối phức tạp. Có cách nào thông minh để thực hiện việc này mà không cần dùng đến việc tạo cấu trúc cây và duyệt qua nó không?

câu trả lời hay nhất

Đầu ra bạn yêu cầu về cơ bản là một cấu trúc cây. Nghĩa là, bạn có thể coi đầu vào là một lần truyền tải theo chiều sâu được đặt hàng trước và đọc cấu trúc cây mà không cần giữ mọi thứ trong bộ nhớ cùng một lúc:

độ sâu = [0, 1, 2, 3, 2, 3, 3, 0, 1, 2, 1, 2] # Đầu vào của chúng tôi

next_id = 0 #Id của nút tiếp theo
ids = [] # Id của các nút khi chúng ta duyệt qua
parent = {} # Ánh xạ con cái tới cha mẹ
trẻ em = {} # Ánh xạ cha mẹ tới danh sách trẻ em

cho chiều sâu trong chiều sâu
# Đầu tiên chúng ta đặt cho nút này một id
id = next_id
next_id += 1

nếu ids.length <= chiều sâu
# Nếu đây là lần đầu tiên chúng tôi đạt đến độ sâu này, hãy đẩy cấp độ mới lên id.
ids.append(id)
khác
# Ngược lại chỉ cần chèn id vào danh sách ở độ sâu của nó
id [độ sâu] = id

# Và cắt bỏ tất cả các phần tử sau đó. Điều này giữ nguyên tính bất biến.
# rằng mỗi id là hậu duệ của các id xuất hiện trước nó.
ids[độ sâu].resize(độ sâu + 1)

khẳng định(ids.length == độ sâu + 1)

# Phát ra liên kết giữa nút này và nút cha của nó
nếu độ sâu > 0
cha mẹ[ids[độ sâu]] = ids[độ sâu - 1]
trẻ em[ids[độ sâu - 1]] ||= [] # thêm danh sách trống trước nếu cần
trẻ em[ids[độ sâu - 1]].append(ids[độ sâu])

Về c++ - nhận tất cả cha mẹ/con cái trực tiếp trong một cây được biểu thị bằng chuỗi số, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/11487944/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress