Menu
CoddyTech

Lowest Common Ancestor of a Binary Tree

Kamu mendapatkan pohon biner dalam array root, dengan urutan heap: akar berada pada indeks 0, anak-anak dari indeks i berada pada 2*i+1 (kiri) dan 2*i+2 (kanan), dan -1 menandakan tempat kosong. Nilainya berbeda dan tidak mengikuti urutan tertentu.

Kembalikan nilai leluhur bersama terendah dari p dan q, yaitu nilai dari dua node yang berbeda: node terdalam yang subpohonnya memuat keduanya. Subpohon mencakup node teratasnya, jadi jika q berada di bawah p, jawabannya adalah p.

Fungsi

lowestCommonAncestor(root: integer-array, p: integer, q: integer) → integer
rootinteger-array
pohon biner dalam urutan level, dengan -1 untuk posisi kosong
pinteger
nilai dari satu node
qinteger
nilai node lain
Mengembalikaninteger
nilai node paling bawah yang subtree-nya memuat p dan q

Batasan

  • 2 ≤ root.length ≤ 32767
  • Setiap root[i] adalah -1 atau nilai dengan 0 ≤ root[i] ≤ 104.
  • root[0] tidak pernah -1, dan pohon memiliki setidaknya dua simpul.
  • array tersebut mungkin diakhiri dengan entri -1 tambahan setelah node terakhir.
  • Kedua anak dari posisi kosong juga kosong, dan kedalamannya paling banyak 14.
  • Semua nilai dalam pohon berbeda, dan tidak mengikuti urutan apa pun.
  • p dan q adalah nilai dari dua node yang berbeda dalam tree, dalam urutan apa pun.

Contoh

Input
root = [8, 3, 10, 6, 4, 12, 1, -1, -1, 7, 9]p = 6q = 9
Output
3
Penjelasan
6 adalah anak kiri dari 3, dan 9 berada di bawah 4 di sebelah kanan 3, jadi keduanya bertemu di 3. Membandingkan nilai akan menunjuk ke root 8: 6 lebih kecil dan 9 lebih besar.
challenge icon

Pertanyaan lanjutan

Jika p atau q mungkin tidak ada, dengan -1 sebagai jawabannya, pintasan mana dalam satu kali lintasan yang tidak berfungsi, dan bagaimana kamu tetap menyelesaikannya dalam satu traversal?

Reset kode
def lowestCommonAncestor(root, p, q):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

root = [8, 3, 10, 6, 4, 12, 1, -1, -1, 7, 9]
p = 6
q = 9

Output yang diharapkan

3