2010-07-24 36 views
11

Tôi tự hỏi nếu có một từ hiện tại để mô tả một quá trình mà tôi hiện đang sử dụng. Tôi muốn gọi nó là "làm phẳng một cái cây" nhưng tôi cảm thấy phải có một từ hoặc cụm từ tốt hơn.Tìm kiếm một từ để "làm phẳng một cây"

đầu vào:

|--D 
--B 
| |--C 
| 
A-E 
| 
| |--G 
--F 
    |--H 

đầu ra:

[ [A, B, D] 
    [A, B, C] 
    [A, E] 
    [A, F, G] 
    [A, F, H] ] 

Có một cái tên được thiết lập cho quá trình này?

+5

Làm ván ép? –

+2

+1 - ngôn ngữ quan trọng để thể hiện ý tưởng, chỉ cho nỗ lực. – SoftwareGeek

Trả lời

7

Điều tra đường dẫn?

DFS truyền tải?

hoặc yêu thích của tôi

Mảng cây!

+2

Nó trông giống như một điều tra của tất cả các đường dẫn để 'điều tra đường dẫn' có vẻ phù hợp. –

0

Bạn cần tìm kiếm chiều sâu đầu tiên để nắm bắt mọi đường dẫn từ gốc đến một chiếc lá.

Pseudo code:

global allPaths = [] 
R = root 
currentPath = [] 
findPaths(R, currentPath) 

findPaths(R, currentPath){ 
if R has no children, 
allPaths.add(currentPath) 

else 
for each child C in R: 
findPaths(C, currentPath + R) 
} 
+0

Có, nhưng có một từ cho hàm trả về một mảng đường dẫn không? Có rất tốt có thể không được. – mwhite

+0

Bạn đang "tìm tất cả các đường dẫn đến lá". Tôi không nghĩ rằng bạn có thể nhận được một từ duy nhất cho nó. –

+2

Danh sách đường dẫn. Bam! Từ đơn. – JavadocMD

3

Tôi muốn nói bạn chỉ cần đi qua cây, trong khi vẫn giữ một con đường đến nút hiện hành. Khi bạn ghé thăm một chiếc lá, bạn in đường dẫn đầy đủ đến chiếc lá.

Tôi không nghĩ rằng có một tên cụ thể, nhưng nó không khác nhiều so với một quá trình truyền tải rất đơn giản.

4

Làm thế nào về 'Hydrating' (hoặc DeHydrating) tùy thuộc vào tình huống?

+0

Tôi không chắc chắn một cuốn sách giáo khoa sẽ liệt kê đó, nhưng 1 cho việc nộp thực tế của một 'tên' :-) –

+0

@pst - nhiều đánh giá cao !! – SoftwareGeek

+1

dường như một số kẻ hèn nhát đã bị lật đổ. những gì một nite! – SoftwareGeek

2

De-Normalisation dường như là tốt nhất. Bởi vì thực sự, nếu bạn nhận thấy cấu trúc mới của bạn, bạn có dữ liệu thừa, và nó sẽ xuất hiện để ánh xạ trực tiếp đến ý tưởng khái niệm.

2

Làm thế nào về "Chainsawing"

0

Tôi nghĩ về nó là coalescing các phần của cây.

2

Vâng, nó được gọi là Serializing

0

Nếu đầu vào là cây và sản lượng là danh sách các danh sách mà bạn trích dẫn, bạn không thực sự tìm kiếm một cụm từ cho quá trình, bạn đang tìm kiếm tên cho chương trình con bạn gọi. Và tên của một chương trình con như vậy sẽ là một mô tả về những gì nó trả về.

Làm thế nào về RootPathsOfLeaves? hoặc một số sắp xếp lại ...

1

Tôi vừa chạy qua một bài viết trên wiki về "Disjoint Sets" và thuật ngữ mà nó sử dụng là "nén đường dẫn".

Trích:

... Cải tiến thứ hai, được gọi là đường dẫn nén, là một cách làm phẳng cấu trúc của cây bất cứ khi nào Tìm được sử dụng trên đó. Ý tưởng là mỗi nút được truy cập trên đường đến nút gốc cũng có thể được đính kèm trực tiếp vào nút gốc; tất cả họ đều chia sẻ cùng một đại diện của . Để thực hiện điều này, khi Tìm theo cách đệ quy đi qua cây , nó sẽ thay đổi phụ huynh của mỗi nút tham chiếu để trỏ đến thư mục gốc mà số đó được tìm thấy là số . Cây kết quả có nhiều kích thước phẳng hơn, tăng tốc các hoạt động trong tương lai không chỉ trên các phần tử này mà còn trên những tham chiếu đó trực tiếp hoặc gián tiếp.

Các vấn đề liên quan