trang chủ / bài tập / bstparent

Xây dựng cây nhị phân tìm kiếm

Đề bài

Mô tả

Cho một dãy a gồm n số nguyên đôi một khác nhau. Ta dùng dãy này để xây dựng một cây nhị phân tìm kiếm (BST) theo quy tắc sau:

  1. Phần tử a1 trở thành gốc của cây.
  2. Lần lượt thêm các phần tử a2,a3,,an. Để thêm phần tử ai:
    • Đặt con trỏ hiện tại tại gốc cây.
    • Nếu ai lớn hơn giá trị ở nút hiện tại thì chuyển con trỏ sang con phải, ngược lại chuyển sang con trái.
    • Nếu nút con cần đi tới chưa tồn tại thì tạo một nút mới mang giá trị ai và gắn nó vào đúng vị trí con đó, quá trình thêm ai kết thúc.

Với mỗi i>1, hãy cho biết giá trị được ghi ở nút cha của nút chứa ai.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là độ dài của dãy.
  • Dòng thứ hai chứa n số nguyên đôi một khác nhau a1,a2,,an.

Dữ liệu ra

In ra n1 số nguyên trên một dòng, cách nhau bởi dấu cách: số thứ i là giá trị ở nút cha của nút chứa ai+1.

Ràng buộc

  • 2n100000
  • 1ai109
  • Các giá trị ai đôi một khác nhau.

Ví dụ

Input Output Giải thích
5
4 2 3 1 6
4 2 2 4 Gốc là 4. Số 2 nhỏ hơn 4 nên thành con trái của 4. Số 3 đi 4 → 2 rồi thành con phải của 2. Số 1 đi 4 → 2 rồi thành con trái của 2. Số 6 lớn hơn 4 nên thành con phải của 4.
3
1 2 3
1 2 Cây suy biến thành một chuỗi lệch phải: 1 → 2 → 3, nên cha của 2 là 1 và cha của 3 là 2.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 csc 6.12.0.200 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 kotlinc 2.4.10 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0