--- title: โครงสร้างข้อมูลและอัลกอริทึม 23/08/2565 subtitle: date: วันอังคารที่ 23 สิงหาคม 2565 เวลา 13.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์สุธาสินี) คราวนี้นะคะ ก่อนที่เราจะขึ้นเรื่องใหม่ เดี๋ยวครูจะทวนของนะคะ ที่เราเรียนผ่านกันมา จะมี 2 เรื่องนะคะ Stack กับคิว Stack กับคิวนะคะ จะมีลักษณะจัดเก็บข้อมูลคล้าย ๆ กัน ถ้าเราเข้าใจ Stack เราก็น่าจะเข้าใจคิวนะคะ มันจะมองในมุมตรงกันข้ามกัน คราวนี้ ถ้าเราดูว่าStack เป็นอย่างไร ตามหัวข้อที่ครูลิสต์มาให้ Queue ตามที่เราเปรียบเทียบกัน มีความแตกต่างกันอยู่นะ แต่เราต้องจับประเด็นให้ได้ว่าอะไรที่มันหัวข้อเดียวกัน แล้วความต่างแต่ละตัวมันเป็นอย่างไร เราเริ่มต้นที่ Stack นะคะ ถ้าเราพูดถึง Stack ลักษณะของการจัดเก็บข้อมูล ก็คือเข้าก่อนออกทีหลัง เข้าก่อนออกทีหลังนะคะ ถ้าเราอยากจะนึกเป็นภาพนะ ว่า เอ๊ะ ลักษณะของการเข้าก่อนออกทีหลังเป็นอย่างไร ให้ทุกคนนึกถึงหลอดใส่ CD ข้อมูลที่อยู่ใต้น่ะ อยู่อันแรกสุดเลย จะอยู่ด้านล่างใช่ไหมคะ ข้อมูลที่เอาเข้าไปเก็บในหลอดซีดีอันสุดท้ายน่ะ มันจะอยู่ด้านบนสุด เวลาเราดึงออกมาใช้ เราก็ดึงข้างบนน่ะ ดึงออกมาใช้ทีละตัว เพราะฉะนั้น ตัวที่เก็บล่าสุดจะเอาออกมาใช้งานก่อนนะคะ ก็จะเข้า Concept ของ Stack คือ เข้าก่อนออกทีหลัง หรือชามก๋วยเตี๋ยวเหมือนกัน เขาล้างเสร็จเขาก็ตั้งชั้นขึ้นมาใช่ไหม เวลาเรามาซื้อเขาก็จะหยิบออกมา หยิบออกมานะคะ แล้วคำสั่งที่เราใช้ใน Stack มีอะไรบ้าง เรามีคำสั่งอยู่แค่ 2 ตัว ที่ใช้ใน Stack คือ Push กับ Pop Push คือ ใส่เข้าไป เรา Push ใส่เข้าไปนะคะ ส่วน Pop ก็คือดึงออกมานะ เรา Pop ก็คือดึงข้อมูลออกมาจาก Stack นะคะ เวลาเราจัดเก็บข้อมูลใน Stack ให้นึกถึง List นะคะ ให้นึกถึง List ให้นึกถงเป็นตาราง ให้นึกถึงลักษณะที่เป็นลักษณะที่เป็นตารางนะคะ Push ก็คือค่อย ๆ ใส่ช้อมูลเข้าไปทีละช่อง ทีละช่อง แล้วเวลา Pop Pop ก็คือข้อมูลไหนที่เราใส่ล่าสุดน่ะ เมื่อเราสั่ง Pop มันจะถูกเอาออกมาทำงานก่อน แล้วตัวกำกับหรือตัวชี้ว่าข้อมูลล่าสุดที่อยู่ใน Stack มันอยู่ตรงไหน ใช่ไหมคะ Stack มันมีทางเข้าทางออกเพียงแค่ 1 ทางเท่านั้น เพราะฉะนั้น มันจะมีตัว Top นะคะ ตัว Top นี่ เป็นตัวบอกว่าข้อมูลล่าสุด ที่อยู่ใน Stack มันอยู่ใน Index ที่เท่าไร เพราะฉะนั้น Top จะเป็นตัวบอกตำแหน่งว่าข้อมูลล่าสุดที่อยู่ในตำแหน่งนี่ มันอยู่ตำแหน่งที่ Index ที่เท่าไหร่ ถ้าเราวาดเป็นตาราง 1 แถว หลายคอลลัมน์ ใช่ไหมคะ Index ก็คือช่องแรก เราจะหมายเลขช่อ คือ 0 12 3 ไล่ไปเรื่อย ๆ เพราะฉะนั้น หมายเลข Index นั่นล่ะ คือตัว Top ที่บอกว่าตัวล่าสุดมันอยู่ช่องไหนนะคะ ถ้า Stack ว่าง หมายถึงอะไร เราไม่มีข้อมูลอยู่ใน Stack เลย เพราะฉะนั้น ค่า Top จะเป็นเท่ากับ -1 คือ ไม่ได้บอกเลย ว่าอยู่ช่องที่เท่าไหร่เลย แต่จะเริ่มต้นที่ 0 นะคะ -1 นะคะ แล้วมาดูอีก 1 ตัว คือ Queue แล้วอันนี้จะใกล้ตัวเรามากขึ้น เหมือนกับที่เราไปต่อคิวซื้อข้าว ไปต่อคิวทำกิจกรรมต่าง ๆ ต่าง ๆ Queue เข้าก่อน ก็ต้องออกก่อน เพราะฉะนั้น Queue จะมีทางเข้าออก อยู่ 2 ทางนะคะ ออกข้างหน้า เข้าข้างหลังนะคะ Queue มีทางเข้าทางออก 2 ทาง เข้าข้างหลัง ออกข้างหน้าใช่ไหม คนมาก่อน ก็ต้องออกข้างหน้า เวลาเข้า ก็คือเข้าข้างหลังนะคะ เหมือนเราไปต่อคิวน่ะ มันมีทางเข้าทางออกกันคนละทางคำส่งที่ใช้ใน Queue มีอยู่ 2 ตัวเหมือนกัน เข้ากับเอาออกเหมือนกันนะคะ เราจะใช้คำสั่ง Endqueue Enqeue Enter คิวนะคะ ส่วน Deque ก็คือเอาออก deqeue ก็คือเอาข้อมูลออก มันก็จะตรงกับ Push กับ Pop คิวก็คือ Enqueue แล้วตัวกำกับข้อมลที่อยู่ใน Queue เราใช้ค่าอะไรเป็นตัวกำกับคิวเราก็มองเป็นลิสต์เหมือนกัน เป็นช่อง ๆ หมายเลขช่อง เราเริ่มต้นหมายเลขช่องแรกก็คือ 0 ตัวกำกับจะมี 2 ตัวนะคะ ก็คือ front กับ rear front คือ ข้างหน้า rear คือ ข้างหลัง คือ F กับ front จะเป็นตัวบอกข้อมูลว่าตัวไหนที่จะถูกเอาออก เพราะมันเอาออกข้างหน้านะคะ จะชี้อยู่ด้านหน้า เป็นตัวบอกว่า front กำกับอยู่ที่ช่องไหน ถ้าข้อมูงนั้นจะถูกเอาออก ส่วน rear จะเป็นตัวกำกับอยู่ที่ทางเข้านะคะ rear จะบอกตำแหน่งล่าสุดของข้อมูล ว่าข้อมูลตัวที่เข้าล่าสุดใน Queue อยู่ที่ตำแหน่งไหน ก็ระบุค่า index ก็คือหมายเลขช่องที่ค่าข้อมูลนั้นอยู่ คิวว่าง คิวว่าง แสดงว่ามันว่างนะ queue ว่าง ก็คือไม่มีข้อมูลอยู่ใน queue เลย front กับ rear จะมีค่าเป็น -1 นะคะ front เป็น -1 โอเค อันนี้ครูทบทวนให้นะ สรุปมาให้ว่า Stack กับ Queue เป็นอย่างไร คราวนี้ก่อนที่จะขึ้นเรื่องใหม่ ครูมีแบบฝึกหัด ลองทำดูว่าเข้าใจหรือเปล่า ครูจะค้างหน้านี้เอาไว้ให้นะคะ แจกคนละชุดนะคะ หรือสามารถเปิดในสมุดได้นะคะ คราวที่แล้วน่ะ ที่เราทำไปนะ ในเรื่องของ Queue นะ เราก็ไปทบทวน ไปทบทวนได้ ก่อนจะขึ้นเรื่องใหม่ ลองดูนะคะ ว่าเรายังจำได้ไหมนี่ Front Stack กับ Queueดูนะคะ ครูมีอยู่ทั้งหมด 5 ข้อด้วยกัน ทำลงในกระดาษที่ครูแจกเลย เขียนลงไปในนี้เลยนะคะ ข้อ 1 กับข้อ 2 ให้เขียนอธิบายนะคะ ว่าลักษณะของ Stack เป็นอย่างไร ลักษณะของ Queue เป็นอย่างไร คำสั่ง Push 5 หมายถึงอะไร ครูระบุไว้ให้แล้วนี่ Push หมายถึงอะไร เรา Push ข้อมูลอะไรลงไป ก็เขียนอธิบายคำสั่งนี้ทำอะไร คำสั่ง Pop ทำอะไร ถัดมา ก็จะมากำหนดค่า Top ครูมี Stack ให้แล้ว เมื่อเราใช้คำสั่ง Push แล้วนี่ ค่า Top จะมีค่าเป็นอะไร หลังจากใช้คำสั่ง Pop แล้ว ค่า Top จะเป็นอย่างไรนะคะ Queue ก็เหมือนกัน เริ่มต้น เขียนชื่อลงในกระดาษแผ่นแรกนะคะ (อาจารย์สุธาสินี) คราวนี้มาดูพร้อมกันนะคะ เห็น... มาดูพร้อมกันนะคะ ตัวนี้ คือ Stack นะ โจทย์บอกตัวนี้คือ Stack นะคะ Stack คือ เข้าข้างหลัง ออกข้างหลังใช่ไหมคะ Stack นะ เข้าข้างหลัง ออกข้างหลัง ก็คือทางเข้า-ทางออก มันอยู่ด้านหลังนะคะ คำสั่งตัวแรกดู ครูสั่งอะไรคะ Push Push คือใส่ ครู Push อะไรคะ ครู Push เลข 3 คำสั่งคือใส่ข้อมูลเลข 3 เพราะฉะนั้น ครูใส่ตรงไหน ใส่ข้างหลังเห็นไหมคะ ครูใส่เลข 3 เห็นไหมคะ ครูใส่เลข 3 ลงมา มันมีที่ว่างตรงไหนคะ ครูหาทีว่างใส่นะ นี่ครูเจอช่องนี้ว่างพอดีเลย เพราะฉะนั้น เลข 3 ครูก็อยู่ที่ช่องนี้นะคะ เลข 3 นี่ครูมาอยู่ที่ช่องสุดท้าย มันมีช่องใส่อยู่ช่องเดียวน่ะ ข้างหน้ามันเต็มหมดแล้ว แล้วค่า Top จะเป็นอะไร ค่า Top เป็นอะไร เราก็ต้องดูสิว่าค่าเลขช่องนี้มันอยู่ช่องหมายเลขอะไร เราก็ต้องเริ่มเขียนจากช่องแรก ก็คือหมายเลข 2 หมายเลข 3 หมายเลข 4 ถูกไหมคะ เพราะฉะนั้นแล้วนี่ ข้อมูลของครูอยู่หมายเลขอะไร หมายเลข 4 เพราะค่า Top จึงมีค่าเท่ากับ 4 เห็นไหมคะ มันตรงกันนะ ข้อมูลครูอยู่ตรงนี้ คือ 4 Top ครูเลยมีค่าเท่ากับ 4 คำสั่ง Push นะคะ เดี๋ยวเรามาดูอีก 1 ตัว ดูสิคะ Push เหมือนกัน เห็นไหมคะ เจอ Push เหมือนกัน แสดงว่าใส่ข้อมูลใช่ไหม Push คือใส่ข้อมูล ใส่ข้างไหน คือ ใส่ข้างหลัง แล้วก็ใส่ลงมานะคะ คือ ใส่หมายเลข 10 พอครูใส่หมายเลข 10 เห็นไหม มันมีที่ว่าง มันค่อย ๆ ไหลลงมา ไหลลงมานะคะ ก็เลยมาใส่ที่ช่องหลังเลข 3 แล้วหมายเลขช่องคืออะไร เราก็เขียนเหมือนเดิม 0 1 2 เพราะฉะนั้น ค่า Top เลยมีค่าเท่ากับ 2 เห็นไหมคะ เพราะข้อมูลของเรานี่อยู่หมายเลข 2 โอเค ถัดมา เราเจอคำสั่งใหม่แล้ว คำสั่ง Pop Pop คือ เอาข้างหลังออก เอาข้อมูลที่อยู่ข้างหลังออก คือ Pop เพราะฉะนั้น ข้อมูลที่อยู่ข้างหลัง คือเลข 9 ใช่ไหมคะ ข้อมูลที่อยู่ข้างหลัง ตัวหลังสุด คือ เลข 9 ไม่ใช่ค่ะ คือ เลข 4 พูดผิด ตัวหลังสุด คือ เลข 4 เพราะฉะนั้น ครูเอาเลข 4 ออก ถูกไหมคะ ลบมันทิ้งไปเลย ครูลบมันทิ้ง Pop คือ เอาออก เพราะฉะนั้น มันจะไม่มีข้อมูลหมายเลข 4 อยู่ใน Stack ของเราแล้ว เพราะฉะนั้น ข้อมูลตัวล่าสุดของเรา เลขอะไรคะ เลข 9 ถ้าเลข 9 เราอยู่ที่หมายเลขช่องอะไร เราไม่รู้เราก็เขียน 0 1 2 เพราะฉะนั้น ค่า Pop ก็คือ ค่า 2 นะคะ อันไหนที่เราตัดทิ้งเราก็ลบออกไปเลย ถัดมา เรา Pop อีกแล้ว Pop คืออะไรคะ เอาออก เราก็เขียนไว้ก่อนนะ Pop คือ เอาออก เอาตรงไหนออก มันเหลือตัวเดียวน่ะ มันมีเลข 7 ตัวเดียว เพราะฉะนั้น เราต้องเอาเลข 7 ออก เพราะฉะนั้น ตอนนี้เรามีข้อมูลใน Stack ไหม จะเป็น 0 ได้ไหม ไม่ได้ ถูกไหมคะ เป็น 0 ไม่ได้ ถูกไหมคะ เพราะฉะนั้นTop ของเราจึงมีค่าเป็น -1 ตามที่ครูบอกนะ Stack ว่าง มีค่าเป็น -1 โอเค เราลองมาดู Queue Queue Queue เห็นไหมคะ ครูบอกแล้วตัวนี้ คือ Queue ครูก็บอกแล้วว่า อันนี้ คือ Queue จะมีตัวกำกับหรือตัวชี้อยู่ 2 ตัว ก็คือ front กับ rear คือ f กับ r ใช่ไหมคะ front อยู่ข้างหน้า rear อยู่ข้างหลัง จะมีคำสั่ง enqueue กับ dequeue ใช่ไหมคะ dequeue คืออะไร เอาออก dequeue คือ เอาข้อมูลออก เอาข้างหน้าออก เห็นไหมคะ dequeue คือ เอาข้างหน้าออก เพราะฉะนั้น เอาเลขอะไรออกคะ เลข 7 เอาเลข 7 ออก เพราะฉะนั้น ข้อมูลตัวแรกคืออะไร เราเขียนหมายเลขก่อน ข้อมูลตัวเลขจะอยู่ที่เลข 6 ใช่ไหม มันตรงกับเลขอะไร ช่อง 1 ก็คือ front ก็คือข้างหน้าถูกไหม ตัวสุดท้ายอยู่ช่องเลขอะไร เลข 3 นะคะ อันนี้คือตัวแรก อันนี้คือตัวสุดท้าย ถัดมา ครูใช้คำสั่ง enqueue เราเห็น enqueue ว่ามีตัวเลขใช่ไหมคะ แสดงว่าต้องเอาเข้าน่ะ เอาเข้าถูกนะ เอาเข้าข้างหน้าหรือข้างหลัง ข้างหลังเอาเลข 3 เข้า ถูกไหมคะ พอครูเอาเลข 3 เข้า จะไปอยู่เลขไหน จะอยู่หลังหมายเลข 6 เราใส่เลขกำกับก่อน 0 1 2 ข้อมูลตัวแรกอยู่ที่ไหนคะ 0 ข้อมูลตัวสุดท้ายอยู่ที่ 2 front บอก... front จะบอกข้อมูลตัวแรกใช่ไหมคะ ส่วน rear จะบอกข้อมูลตัวสุดท้าย ถัดมา Enqueue เอาเข้า-เอาออก เอาเข้า เอาเข้าข้างหลัง เอาอะไรคะ เอา 8 เข้า เพราะฉะนั้น มันจะไปอยู่ที่ช่องหลังเลข 4 มันมีหมายเลขช่องไหม มี ข้างหลัง ก็คือ rear ใช่ไหม 8 อยู่หมายเลข 3 ตัวแรก อยู่ช่องหมายเลข 1 เห็นไหมคะ อันนี้คือช่องแรก อันนี้คือช่องสุดท้าย ถัดมา dequeue คืออะไรคะ เอาออก เอาข้างหน้าออกใช่ไหมคะ เพราะฉะนั้น เอาหมายเลขอะไรออก หมายเลข 4 เพราะฉะนั้น ข้อมูลจะเหลือแค่ 1 ตัว เพราะฉะนั้นอยู่ช่องอะไรคะ หมายเลข 2 มีข้อมูลอยู่แค่ตัวเดียว เห็นไหมคะ หมายเลขช่อง ก็คือเลข 2 ถัดมา Dequeue Dequeue คืออะไรคะ เอาออกอีกแล้ว เอาอะไรออก เอา 2 ออก ตอนนี้มีอะไรในคิว ไม่มี เพราะฉะนั้น จะมีค่าเป็น -1 คือ queue ว่าง เมื่อกี้เราใช้คำสั่ง enqueue กับ dequeue นะ เพราะฉะนั้น enqueue 5 หมายถึงอะไรคะ เอาข้อมูลเลขอะไร เอาข้อมูลเลข 5 เข้าไปใน queue ใช่ไหมคะ dequeue คืออะไร เอาข้อมูลทำไมคะ ออกจาก queue โอเค ถ้า Push คือ Stack เอาข้อมูลอะไร เอาข้อมูล 5 ใส่ลงไปใน Stack 5 มาจากไหนนี่นะ มันบอกนี่ คำสั่งมันบอกว่าเอาเลข 5 นะคะ ส่วน Pop คืออะไรคะ เอาข้อมูลออกจาก Stack เอาข้อมูลข้างหลังหรือข้างหน้าออก Stack เอาข้อมูลข้างหลังหรือข้างหน้าออก ข้างหลัง ถูกไหมคะ เอาข้อมูลข้างหลังออก เอาข้อมูลจากข้างหลังนะคะ ออก เดี๋ยวถ่ายรูปนะคะ ลงใน classroom หน่อย ถ่ายรูปแบบฝึกหัดที่ทำนะคะ ลงใน Classroom เสร็จแล้วทุกคนถ่ายรูปนะคะ แล้วก็โพสต์ลงไปใน Classroom ถ่ายให้ครบ 3 แผ่นเลยนะ มี 4 คน ทุกหน้า คุณแม่ เสร็จแล้วเดี๋ยวครูให้เบรก 5 นาทีนะ เดี๋ยวมาขึ้นเรื่องใหม่นะคะ จะให้เบรกก่อน จะได้เคลียร์ของเก่า โอเค มาต่อนะคะ จะเป็นอีก 1 โครงสร้างนะ เราพูดถึง Stack กับ Queue ไปแล้วนะคะ Stack กับ Queue มันข้อมูลมันจะเรียงกันเป็นแถว อาจจะเป็นแนวตั้งหรือแนวนอนก็ได้ แต่ทีนี้ ถ้ามีข้อมูลนะคะ ที่มันไม่ได้จัดเก็บเป็นแนว ข้อมูลหรือเชิงโครงสร้าง เป็นแนวตั้งหรือแนวนอนนะคะ เป็นแนวตั้ง แนวนอน แต่ข้อมูลเรานะคะ มีลักษณะการจัดเก็บเป็นลำดับชั้น แล้วเราจะเก็บข้อมูลแบบไหน เราก็จะมีรูปแบบนะคะ แบบแรกเราจะเรียกว่า "โครงสร้างข้อมูลแบบต้นไม้" แล้วก็มีอีก 1 แบบนะคะ ที่จัดเป็นแบบเชื่อมโยงเครือข่ายได้นะคะ คือ กราฟกับต้นไม้นะ เราเรียนต้นไม้ก่อน เสร็จแล้ว เราจะมาเรียนกราฟ ลักษณะของโครงสร้างข้อมูลแบบต้นไม้ จะเหมือนกับ folder จะลักษณะเหมือนกับ folder เลย มีตัวแม่ คลิกเข้าไปก็มีลูก ถูกไหมคะ คลิกเข้าไปก็มีตัวลูก เรื่อย ๆ นะ คราวนี้ในการจัดเก็บข้อมูลโครงสร้างข้อมูลแบบต้นไม้นะคะ เดี๋ยวเราลองจินตนาการนะ ต้นไม้นะคะ เดิมรากมันจะอยู่ด้านล่าง ถูกไหม ต้นไม้ที่เราปลูก ต้นไม้มันจะอยู่ด้านล่าง เรากลับดึงแรก ขึ้นมาไว้ข้างบนนะคะ ลักษณะแบบนี้ ตัวบนสุดก็ คือ รูตโหนด ก็คือตัวพ่อแม่เลยน่ะ คือ รูต ถ้าเทียบกับบรรพบุรุษ ทุกคนนึกภาพโครงสร้างบรรพบุรุษที่อยู่ในบ้านเราได้นะ เราจะมีตั้งต้นแล้วก็มีลูกหลายแตกแขนงมาเรื่อย ๆ นะคะ ลักษณะแบบเดียวกัน บนสุด คือ บรรพบุรุษ โหนดคือต้นกำเนิดเลย แต่รูตโหนดเรามีอยู่แค่ 1 โหนดเท่านั้นนะคะ จะเรียกว่า "โหนด" ตัวกลม ๆ จะเรียกว่า "โหนด" เสร็จแล้วนี่ นี่คือบรรพบุรุษ ถูกหรือเปล่า บรรพบุรุษนี่ ก็มีลูก เห็นไหมคะ บรรพบุรุษก็มีลูก ลูกก็มีหลานออกมาใช่ไหมคะ กลุ่มนี้ คือ พี่น้องนะ คือ พี่น้องที่มีพ่อเดียวกัน กลุ่มนี้นะคะ ด้านซ้ายกับด้านขวา เป็นลูกพี่ลูกน้องใช่ไหมคะ เป็นลูกพี่ลูกน้อง อันนี้คือพ่อเรา อันนี้คือลูกพี่ลูกน้องเรา โอเค ตัวที่อยู่ล่างสุดนะคะ ตัวที่อยู่ล่างสุด เราจะมีชื่อเรียกว่า "ลิสต์โหนด" ก็คือเราเป็นรุ่นยังไม่มีใครต่อจากเรา เรายังไม่ได้แต่งงานถูกไหมคะ เราจะเปรียบเป็นลีฟโหนดของตระกูลนะ เป็นคนล่างสุด เป็นคนชั้นสุดท้ายของตระกูลนะคะ เราจะเห็นว่าลักษณะของโครงสร้างข้อมูล แบบนี้เราเห็นเป็นลำดับชั้นถูกไหมคะ อันนี้เป็นชั้นที่ 1 ชั้นที่ 2 ชั้นที่ 3 ไล่ลงมาเรื่อย ๆ นะคะ โอเค ตัวบนสุด เรียกว่า "root node" r-o-o-t คือ root node คือ โหนดแม่ ตัวล่างสุดเรียกว่านะคะ คือ ลีฟโหนด คือ ตัวสุดท้าย จะเห็นว่าลีฟโหนด มี 7 มี 9 มี 15 มี 45 แล้วก็ 77 พวกนี้ที่อยู่ล่างสุดนี่เรียกว่า "left node" ทั้งหมดเลย ข้างบน ข้างบนเลข 7 คือ พ่อนะ แม่นะคะ เราเรียกพ่อนะ พ่อของ 7 คือ 13 ลูกของ 13 คือ 7, 915 นะคะ พ่อของ 13 คืออะไร 23 โอเค คราวนี้ จากตรงนี้นะคะ เราดูการเรียกชื่อ หรือว่าลำดับของการเรียกชื่อ โหนด 23 มันอยู่บนสุดเราจะเรียกว่า มันคือ รูตโหนด ตัวนี้นะคะ โหนดที่อยู่บนสุด รูตโหนด ก็คือ ตัวนี้นะคะ เพราะว่ามันคือโหนดแรกสุดนะ ถัดมาโหนด 23 นี่ เชื่อมไปยังโหนด 13 กับ 54 นะคะ เพราะว่ามันเป็นพ่อของ 13 กับ 54 นะ มันเป็นพ่อของ 13 กับ 54 เสร็จแล้ว 13 กับ 54 นี่เป็นลูก เป็นลูกของ 23 นะคะ 7 9 15 โหนด 7 โหนด 9 โหนด 15 เป็นลูกของโหนด 13 ลิฟโหนด คือ โหนดล่างสุดของต้นไม้นะ โหนดที่อยู่ด้านล่างสุดของแต่ละกิ่งของต้นไม้ไม่มีอะไรต่อลงไปอีกแล้ว เราเรียกตัวนั้นว่า "leaf node" นะคะ เห็นไหม เริ่มต้น รูตโหนด คือ 23 นะคะ คราวนี้ระดับของโหนด ก็คือลำดับชั้นของโหนดน่ะ เราเริ่มที่ลำดับชั้นของนะคะ ลำดับชั้นของต้นไม้นะคะ เราเราเริ่มต้นที่ 0 เพราะฉะนั้น ตัวบนสุด จะอยู่ระดับ 0 นะคะ 3 กับ 54 จะอยู่ระดับ 1 ระดับ 2 ระดับ 3 ไล่ลงมาเรื่อย ๆ โหนดพ่อ พ่อก็คืออยู่สูงกว่าตัวเอง เห็นไหม ลูกก็คือ ณ โหนดที่กล่าวถึงพ่อก็คืออยู่ระดับสูงขึ้นไป ลูกก็คืออยู่ 1 ชั้นนะคะ โหนดพี่น้อง จะเป็นพี่น้องกันได้ต้องพ่อเดียวกัน 7 9 15 เพราะมีพ่อเดียวกันถูกไหม เพราะมีพ่อเดียวกัน แต่ 46 กับ 77 ก็เป็นพี่น้องกันถูกไหมคะ พ่อเดียวกัน เป็นลูกพี่ลูกน้องกันนะ เป็นญาติกัน เป็นลูกพี่ลูกน้องกันลีฟโหนด ก็คือโหนดล่างสุด ไม่มีอะไรทิ่มลงไปแล้ว ไม่มีอะไรแตกออกมาอีกแล้ว โหนดนี้ ไม่มีอะไรแตกออกมาอีกแล้ว มันสุดท้ายแล้ว ส่วน ดีกรี ดีกรีคือจำนวนลูกทั้งหมดของโหนดที่กล่าวถึง เช่น ดีกรีของ 46 คืออะไร คือ 1 ดีกรี คือ จำนวนลูก ดีกรี คือ จำนวนลูกนะคะ 46 มีลูกอยู่ 1 13 มีลูกอยู่ 3 47 มีลูกไหมคะ ไม่มี 77 มีลูกไหม ไม่มี เพราะฉะนั้น ดีกรีมีค่าเป็นอะไรคะ เป็น 0 มีกระดาษไหม หยิบกระดาษให้ครูหน่อย ครูมีรูป ครูมีรูปนี้นะคะ เขียนด้านหลังกระดาษที่ครูให้ไปคราวที่แล้วก็ได้ ตอบให้ครูหน่อยนี่ ตอบอะไรเอ่ย วาดรูปก่อนนะ แล้วก็ตอบว่าข้อ 1 โหนดคืออะไร ข้อ 2 ข้อ 3 ข้อ 4 ข้อ 5 ใครมีสมุด ทำลงสมุดนะคะ วาดรูปด้านซ้ายก่อน แล้วก็เขียนตอบด้านขวา ลอกโจทย์ด้วยนะ เช่น ระดับของโหนด 30 คือ... ตอบมา อันนี้ครูก๊อป (ปี้) ก๊อปฯ คำอธิบายมาให้นะคะ จะได้เห็นด้วย root node คืออะไร ระดับของโหนดคืออะไร ดีกรีคืออะไร คราวนี้ดูอีกทีหนึ่งนะ ดูอีกทีหนึ่งนะ ในโหนดนะคะ ที่ครูให้... เดี๋ยวนะ จากต้นไม้นะคะ ที่เราเห็นต้นนี้นะ จากต้นไม่ต้นนี้ที่เราเห็น 1 ต้นนี่ ถ้าเราพูดถึงพ่อนะคะ พ่อ แสดงว่าคนที่อยู่สูงกว่าเรา พ่อของเรานี่ แสดงว่าลำดับชั้นนี่จะอยู่สูงกว่า ถูกไหมคะ ลูกของเราจะต้องอยู่ต่ำกว่าเรานะคะ อย่างเช่น 55 นะคะ ครูพูดถึง 55 พ่อของ 55 คืออะไร พ่อก็อยู่ข้างบนถูกไหมคะ ก็คือ 50 ถูกไหม อันนี้คือพ่อ 55 คือ ลูกของ 50 ถูกไหมคะ แล้วลูกของ 55 คืออะไร คะ 52 อันนี้คือลูก เห็นไหมคะ เราพูดถึงโหนดนี้ เราพูดถึงโหนด 55 พ่อของ 55 คืออะไร คือ 50 ลูกของ 55 คืออะไร 52 เห็นไหมคะ มันอยู่ด้านล่างนี่คือลูก ถัดมา พ่อของ 70 แสดงว่ามันต้องอยู่ข้างบนถูกไหม คืออะไร คือ 40 ใช่ไหมคะ พ่อของ 70 คือ 40 แล้วลูกของ 70 คืออะไร พี่น้อง หมายถึงพี่น้องพ่อเดียวกัน พี่น้องคือพี่น้องพ่อเดียวกัน พี่น้องของ 20 คืออะไร 70 เพราะอะไร เพราะมีพ่อเดียวกัน เดียวกันนี่ไง เพราะมีพ่อเดียวกัน ถึงเป็นพี่น้องกัน โจทย์ข้อแรก รูตโหนด รูต คืออะไรคะ ตัวบนสุด รูต คือ ตัวบนสุดใช่ไหมคะ ตัวบนสุดคืออะไร 40 ถูกไหมคะ บนสุดคือ 40 พ่อของ 50 พ่อแสดงว่าดูข้างบนนะ พ่อของ 50 คืออะไร 70 นะคะ พ่อของ 50 ก็อยู่ด้านบน ถูกหรือเปล่า อยู่ด้านบนตัวเองน่ะ ตัวเองเชื่อมมาจากเส้นอะไร ก็คือ 70 ถัดมา ลีฟโหนด คือ โหนดที่ไม่มีลูก ก็คือไม่มีอะไรต่อท้ายลงไปแล้ว โหนดที่ไม่มีอะไรต่อท้ายตัวเอง คือ ไม่มีลูกน่ะ มันสิ้นสุดที่ตัวเอง มันไม่มีอะไรไปต่อท้ายแล้ว เพราะฉะนั้น ลีฟโหนดเรามีกี่ตัว 3 ตัว ก็คืออะไร คะ 30, 45 แล้วก็ 52 ก็คือตัวที่ไม่มีลูกน่ะ ไม่มีลูกนี่ ไม่มีลูก อันนี้ก็ไม่มีลูก ถัดมา พี่น้อง พูดถึงพี่น้องต้องพ่อเดียวกัน พี่น้องของ 45 คืออะไรคะ 55 เพราะอะไร เพราะพ่อเดียวกัน เดี๋ยวนะ นี่ไง พี่น้องของ 45 ก็คือ 55 เพราะมันพ่อเดียวกันไง พ่อ ก็คือ 50 ต่อนะคะ พี่น้องของ 50 นี่ดูสิ 50 มีพ่อ คือ 40 ใช่หรือเปล่า มีพ่อคือ 70 มีพี่น้องไหม ไม่มี ไม่มีพี่น้องนะคะ เป็นลูกคนเดียว หรือขีด - ไม่มีพี่น้อง เป็นลูกคนเดียวนะคะ ถัดมา ระดับของ 30 คืออะไร ระดับคืออะไรคะ ชั้น ลำดับชั้นจากรูตโหนด โดยเริ่มต้นที่ 0 ชั้นนี้ มีระดับเป็น 0 ใช่ไหมคะ ชั้นนี้ระดับเป็น 1 ชั้นถัดมาระดับเป็น 2แล้วก็เป็น 3 30 อยู่ระดับไหนคะ ระดับ 2 55 ดีกรีคืออะไรคะ จำนวนลูก มีลูกกี่คน 55 มีลูกกี่คน คนเดียวนะคะ นี่ไง 55 มีลูกกี่คน มีลูกคนเดียวนะคะ เห็นไหมก็ตอบ 1 ดีกรีของ 55 คือ 1 ดูนะคะ ครูให้วาดต้นไม่เครือญาตินะ สมชายเป็นต้นตระกูล สมชายอยู่บนสุด สมชายมีลูก 2 คน คือ A กับ B A มีลูก 1 คน ชื่อ C B มีลูกอีก 3 คน ชื่อ D E F และ F ก็มีลูก 1 คน ชื่อ Z วาดต้นไม้เครือญาติให้ครูหน่อย เราเริ่มต้นถูกไหมคะ ต้นตระกูลของตระกูลคือใคร คือ สมชาย เพราะทุกคนต้องมีสมชายเป็นจุดเริ่มต้นนะคะ เป็นต้นตระกูลของบ้านน้อย สมชายมีลูกกี่คน 2 คน ใช่ไหมช่วยครูวาดต่อหน่อย คือ A กับ B เราวาดต่อให้ครูหน่อย A มีลูก 1 คน ชื่อ C สมชายมีลูก 2 คน คือ A กับ B ใช่ไหมคะ A มีลูกกี่คน มีลูก 1 คนใช่ไหมคะ ก็ลากต่อจาก A ใช่ไหมคะ เพราะมันเป็นลูกของ A น่ะ มาลากออกเป็นลูกคนอื่นไม่ได้ เราก็วาดออกจาก A เพราะ A มีลูก 1 คน B มีลูกกี่คน 3 คน เพราะฉะนั้น ต้องมีกี่เส้น 3 เส้นนะคะ เห็นไหม ครูก็มีเส้นจาก B 3 เส้นนะคะ วาดลูกก่อน ลูกคนแรก ชื่อ D, E แล้วก็F ใช่ไหมคะ คนอื่นไม่มีลูกเลยนะ D กับ E ไม่มีลูกเลย แต่ F คนเดียวที่มีลูกใช่ไหมคะ ก็คือ Z อันนี้เครือญาติของบ้านสมชายใช่ไหมคะ เป็นแบบนี้ ครูถามต่อ จากรูปนี้ รูตโหนดคืออะไรคะ รูตโหนดคืออะไร ก็คือโหนดที่ชื่อสมชาย ถูกไหม ก็เขาอยู่บนสุด เขาเป็นต้นตระกูลของบ้านหลังนี้ ลิฟโหนดคืออะไรคะลีฟโหนด ลีฟโหนด คือ โหนดที่มีลูกไหม เพราะฉะนั้น อันไหนที่ไม่มีลูก C, D, E แล้วก็ Z เห็นไหมคะ คนเหล่านี้เป็นโสด ถ้าเทียบนะ คนเหล่านี้เป็นโสดยังไม่ได้แต่งงานเลยนะคะ ยังเป็นโสดอยู่ ไม่มีลูก ไม่มีลูก พี่น้องของ D คือใคร พี่น้องของ D มีใครบ้าง D Dog พี่น้องของ D. Dog มีใครบ้าง E กับ F ใช่ไหมคะ พี่น้องของ D Dog C มีพี่น้องไหมคะ C มีพี่น้องไหม ไม่มี C ไม่มีพี่น้องนะคะ C เป็นลูกคนเดียว ไม่มีพี่น้อง Z มีพี่น้องไหม ไม่มี เป็นลูกคนเดียวเหมือนกัน Z ก็เป็นลูกคนเดียว โอเค จากเครือตรงนี้ใช่ไหมคะ เราวาดได้ต้นไม้ 1 ต้นนะ ถัดมา ต้นไม้นี่ ในต้นไม้นะคะ เราสามารถมีต้นไม้ย่อย ที่อยู่ภายในต้นไม้ได้ เช่น จากรูปนี้ ตรงนี้ฝั่งซ้ายของ 23 ย่อยนะ ของ 23 ฝั่งขวาตรงนี้ ก็คือต้นไม้ย่อยนะคะ เห็นไหม เพราะว่ามันมีกิ่งก้านสาขาแตกลงมา ตรงนี้ก็เลยเป็นต้นไม้ย่อย ลักษณะของต้นไม้นะคะ เดี๋ยวเราจบที่ลักษณะของต้นไม้ ลักษณะของต้นไม้ที่เราจะพูดถึง ตัวแรก Binary Tree ไบ คือ 2 Binary Tree ก็คือต้นไม้ที่มีลูกได้ ไม่เกิน 2 โหนด ถูกไหมคะ ต้นไม้นี่ มีลูกได้ไหม เกิน 2 เห็นไหม มีได้ไม่เกิน 2 มี 1 ก็ได้นะ มี 2 ก็ได้ ไม่มีก็ได้ แต่มี 3 ไม่ได้นะคะ มีลูก 3 ไม่เข้าข่ายตัวนี้นะ เป็นต้นไม้เฉย ๆ แต่ไม่ใช่ต้นไม้ Binary Tree อีก 1 ต้นไม้นะคะ BST ตรงนี้ BST ตัวนี้ หรือ Binary Search Tree มีลูก 2 เห็นไหมคะ มีลูก 2 หรือมีลูก 1 ก็ได้ แต่สิ่งที่เพิ่ม คือ ลูกด้านซ้าย ดูที่ 8 นะ ลูกด้านซ้าย ลูกด้านซ้ายน้อยกว่าพ่อ ลูกด้านขวามากกว่าพ่อ ซ้ายน้อยกว่าพ่อ ขวามากกว่าพ่อ ตัวนี้ คือ BST หรือว่า Binary Search Tree สังเกตง่าย ๆ เห็นไหมคะ ด้านขวาทุกตัว มากกว่า 8 เลย แต่ด้านซ้ายทุกตัวต้องน้อยกว่า 8 รูปนี้เหมือนกัน ด้านขวามากกว่า 50 ด้านซ้ายน้อยกว่า 50 นะคะ รูปนี้เหมือนกัน บนสุดคือ 7 ถูกหรือเปล่า ด้านซ้ายต้องน้อยกว่า 7 ด้านขวาต้องมากกว่า 7โอเค มี 3 แบบนะ มีต้นไม้ธรรมดา ทุกอย่างเป็นต้นไม้นะ มีต้นไม้ธรรมดา มี Binary Tree ลูก 2 แล้วก็ BST ลูก 2 เหมือนกัน แต่ลูกด้านซ้ายน้อยกว่าพ่อ ลูกด้านขวามีค่ามากกว่าพ่อ โอเค เห็นไหม นะ เดี๋ยวคราวหน้า ครูจะมาทวนต้นไม้อีกครั้งหนึ่ง แล้วเราก็พูดถึงเรื่องต้นไม้ต่อ เราจะเพิ่มโหนดเข้าไปในต้นไม้ทำอย่างไร จะลบโหนดออกจากต้นไม้ทำอย่างไรนะคะ โอเค โอเคนะคะ เดี๋ยวสัปดาห์หน้า เรามาเจอกันอีก วันนี้ก็น่าจะพอแค่ เดี๋ยวครูเช็กชื่อ คราวนี้นะคะ สัปดาห์หน้าพอดีว่าครูติดลงพื้นที่ ครูอยากจะขยับ เลื่อนเป็นพฤหัสบดีบ่าย พฤหัสบดีเช้าก็ได้ค่ะ สัปดาห์หน้านะคะ ครูเลื่อนเป็นพฤหัสบดีเช้านะ [สิ้นสุดการถอดความ] โอเค วันนี้เท่านี้ค่ะ