Làm phẳng cây thành mảng php

Trong khi duyệt MooTools 1. 2, tôi đã tìm thấy phương thức

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1 của Array. Phương thức
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1 lấy các mảng lồng nhau và "làm phẳng" tất cả chúng thành một mảng. Tôi đã tự hỏi làm thế nào tôi có thể làm điều đó bằng cách sử dụng PHP. Sau đây là những gì tôi nghĩ ra

PHP

$myarray = array['a', 'b', array[array[array['x'], 'y', 'z']], array[array['p']]];

function array_flatten[$array,$return] {
	for[$x = 0; $x  a
    [1] => b
    [2] => x
    [3] => y
    [4] => z
    [5] => p
]

Như bạn có thể thấy,

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
3 được sử dụng đệ quy để tìm ra các giá trị từ mảng ban đầu. Mặc dù tôi không tin rằng mình đã từng thấy mình có một mảng được lồng vào nhau như ví dụ của tôi, nhưng thật tốt khi biết rằng tôi có thể trích xuất các giá trị nếu cần

Gói php để làm phẳng các đối tượng json lồng nhau và các mảng lồng nhau. Nó cũng cho phép bạn tạo các tệp csv từ dữ liệu đã được làm phẳng

Chuyển đến Tải xuống

anahkiasen/làm phẳng

340 người yêu thích
12998 lượt tải xuống

Một gói dành cho khung Illuminate làm phẳng các trang thành HTML đơn giản

Chuyển đến Tải xuống

Ashleydawson/canonical-flatten-tree

Hàm thuần túy để làm phẳng một cây [mảng n chiều] thành một mảng danh sách được chuẩn hóa

Chuyển đến Tải xuống

te-cho/compile-blades

Gói Laravel để biên dịch các lưỡi được lồng trong 1 tệp thành 1 tệp phẳng

Chuyển đến Tải xuống

pflorek/thang máy

Làm phẳng mảng nhiều chiều hoặc bất kỳ \Traversable nào thành mảng một chiều. Nâng cấp một chiều hoặc bất kỳ \Traversable nào thành mảng nhiều chiều

Đưa ra một cây nhị phân, làm phẳng nó thành danh sách được liên kết tại chỗ. Không được phép sử dụng cấu trúc dữ liệu phụ trợ. Sau khi làm phẳng, bên trái của mỗi nút sẽ trỏ đến NULL và bên phải sẽ chứa nút tiếp theo theo thứ tự trước

ví dụ.  

Input : 
          1
        /   \
       2     5
      / \     \
     3   4     6

Output :
    1
     \
      2
       \
        3
         \
          4
           \
            5
             \
              6

Input :
        1
       / \
      3   4
         /
        2
         \
          5
Output :
     1
      \
       3
        \
         4
          \
           2
            \ 
             5

Đề nghị thực hành

Làm phẳng cây nhị phân thành danh sách liên kết

Thử nó

Cách tiếp cận đơn giản. Một giải pháp đơn giản là sử dụng Level Order Traversal using Queue. Trong giao dịch theo thứ tự cấp độ, hãy theo dõi nút trước đó. Đặt nút hiện tại là con phải của nút trước và bên trái của nút trước đó là NULL. Giải pháp này yêu cầu hàng đợi, nhưng câu hỏi yêu cầu giải quyết mà không cần cấu trúc dữ liệu bổ sung

 

Hiệu quả mà không cần cấu trúc dữ liệu bổ sung Tìm kiếm đệ quy nút không có cháu và cả con trái và con phải trong cây con bên trái. Sau đó lưu trữ node->right trong temp và tạo node->right=node->left. Chèn tạm thời vào nút đầu tiên NULL ở bên phải của nút bằng nút = nút-> phải. Lặp lại cho đến khi nó được chuyển thành danh sách liên kết.  

Ví dụ,

Thực hiện

C++




The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
4

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
5

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
6

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
7
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
8
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
9

 

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
0
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
0

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
2
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
3

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
5

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
6

 

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
7

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
8
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
2
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
0

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
3
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
4
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
5

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
7

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
9

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
41
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
42

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
43

 

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
44

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
45

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
46

________ 347 ________ 348 ________ 40 ________ 350

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
53

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1____355

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
57
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
58

________ 359 ________ 341 ________ 361

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
63

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
65

The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
1
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
57
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
675
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
630
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
630
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
636
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
679
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
680
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
630
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
630
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
636
The Inorder traversal after flattening binary tree 1 2 3 4 5 6 
684

Chủ Đề