Ini adalah operasi umum untuk pohon biner. Ringkasan:
Mari atur struktur data node, sebagai berikut:
Salin kode kode sebagai berikut:
Kelas treenode {
nilai arang;
Treeenode kiri = null;
Treenode kanan = null;
Treenode (char _val) {
this.val = _val;
}
}
1. Kedalaman pohon biner
Ini dapat diulang -ulang, dan kedalaman subtree kiri ditemukan, dan kedalaman pohon anak yang tepat dapat digunakan.
Salin kode kode sebagai berikut:
// Dapatkan kedalaman maksimum
Public static int getmaxDepth (root treenode) {{
if (root == null)
Kembali 0;
kalau tidak {
int left = getmaxdepth (root.left);
int right = getmaxdepth (root.richt);
Return 1 + Math.max (kiri, kanan);
}
}
2. Lebar biner
Gunakan antrian untuk melintasi lapisan pohon biner. Setelah lapisan sebelumnya selesai, semua node di lapisan berikutnya telah ditempatkan dalam antrian. Dengan analogi, Anda dapat menemukan lebar maksimum pohon biner di lapisan berikutnya.
Salin kode kode sebagai berikut:
// Dapatkan lebar maksimum
public static int getmaxwidth (root timeode) {{
if (root == null)
Kembali 0;
Antrian <Tar
int maxwitdth = 1; // Lebar maksimum
queue.add (root);
While (true) {
int len = queue.size (); // jumlah node dari lapisan saat ini
if (len == 0)
Merusak;
While (len> 0) {// jika lapisan saat ini, ada node
Tangani t = queue.poll ();
len-;
if (t.left! = null)
Queue.add (T.Left);
if (t.right! = null)
queue.add (t.right);
}
maxwitdth = math.max (maxwitdth, queue.size ());
}
Mengembalikan maxwitdth;
}