นี่คือการดำเนินการทั่วไปของต้นไม้ไบนารี สรุป:
มาตั้งค่าโครงสร้างข้อมูลของโหนดดังต่อไปนี้:
คัดลอกรหัสรหัสดังนี้:
คลาส treenode {
ค่าถ่าน;
treenode ซ้าย = null;
treenode ขวา = null;
treenode (ถ่าน _val) {
this.val = _val;
-
-
1. ความลึกของต้นไม้ไบนารี
สิ่งนี้สามารถ recubled และพบความลึกของทรีย่อยด้านซ้ายและความลึกของต้นไม้เด็กด้านขวาสามารถใช้
คัดลอกรหัสรหัสดังนี้:
// รับความลึกสูงสุด
public int int getMaxDepth (treenode root) {{
if (root == null)
กลับ 0;
อื่น {
int left = getMaxDepth (root.left);
int right = getMaxDepth (root.richt);
ส่งคืน 1 + math.max (ซ้ายขวา);
-
-
2. ความกว้างไบนารี
ใช้คิวเพื่อสำรวจชั้นต้นไม้ไบนารี หลังจากเลเยอร์ก่อนหน้านี้เสร็จสิ้นโหนดทั้งหมดในเลเยอร์ถัดไปได้ถูกวางไว้ในคิวในเวลานี้จำนวนองค์ประกอบในคิวคือความกว้างของเลเยอร์ถัดไป โดยการเปรียบเทียบคุณสามารถค้นหาความกว้างสูงสุดของต้นไม้ไบนารีในชั้นถัดไป
คัดลอกรหัสรหัสดังนี้:
// รับความกว้างสูงสุด
public int int getMaxWidth (timode root) {{
if (root == null)
กลับ 0;
คิว <tar
int maxwitdth = 1;
queue.add (root);
ในขณะที่ (จริง) {
int len = queue.size ();
ถ้า (len == 0)
หยุดพัก;
ในขณะที่ (len> 0) {// ถ้าเลเยอร์ปัจจุบันมีโหนด
รักษา 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 ());
-
ส่งคืน Maxwitdth;
-