(อาจารย์สุธาสินี) คราวนี้นะคะ ก่อนที่เราจะขึ้นเรื่องใหม่ เดี๋ยวครูจะทวนของนะคะ ที่เราเรียนผ่านกันมาจะมี 2 เรื่องนะคะ Stack กับ qeueStack กับคิว นะคะ จะมีลักษณะจัดเก็บข้อมูลคล้าย ๆ กันถ้าเราเข้าใจ stack เราก็น่าจะเข้าใจ Queue นะคะ มันจะมองในมุมตรงกันข้ามกันคราวนี้ ถ้าเราดูว่าStack เป็นอย่างไรตามหัวข้อที่ครูลิสต์มาให้ Queue ตามที่เราเปรียบเทียบกันมีความแตกต่างกันอยู่นะ แต่เราต้องจับประเด็นให้ได้ว่าอะไรที่มันหัวข้อเดียวกันแล้วความต่างแต่ละตัวมันเป็นอย่างไร เราเริ่มต้นที่ Stackนะคะ ถ้าเราพูดถึง Stack ลักษณะของการะคะ ถ้าเราพูดถึง Stack ลักษณะของการจัดเก็บข้อมูลก็คือ เข้าก่อน ออกทีหลัง เข้าก่อนออกทีหลังนะคะ ถ้าเราอยากจะนึกเป็นภาพนะว่า เอ๊ะ ลักษณะของการเข้าก่อนออกทีหลังเป็นอย่างไร ให้ทุกคนนึกถึงหลอดใส่ CD ข้อมูลที่อยู่ใต้น่ะ อยู่อันแรกสุดเลย จะอยู่ด้านล่างใช่ไหมคะ ข้อมูลที่เอาเข้าไปเก็บในหลอดซีดีอันสุดท้ายน่ะ มันจะอยู่ด้านบนสุด เวลาเราดึงออกมาใช้ เราก็หยิบข้างบนน่ะ ดึงออกมาใช้ทีละตัวเพราะฉะนั้น ตัวที่เก็บล่าสุดจะเอาออกมาใช้งานก่อนนะคะ ก็จะเข้า Concept ของ Stack คือ เข้าก่อนออกทีหลัง หรือชามก๋วยเตี๋ยวเหมือนกัน เขาล้างเสร็จเขาก็ตั้งชั้นขึ้นมาใช่ไหม เวลาเรามาซื้อเขาก็จะหยิบออกมา หยิบออกมานะคะ แล้วคำสั่งที่เราใช้ใน Stack มีอะไรบ้าง เรามีคำสั่งอยู่แค่ 2 ตัวที่ใช่ใน Stack คือ Push กับ PopPush คือใส่เข้าไป เรา 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 นะคะ Top เท่าหกับ -1 นะคะ แล้วมาดูอีก 1 ตัว คือ Queue แล้วอันนี้จะใกล้ตัวเรามากขึ้น เหมือนกับที่เราไปต่อคิวซื้อข้าว ไปต่อคิวทำกิจกรรมต่าง ๆ Queue เข้าก่อน ก็ต้องออกก่อน เพราะฉะนั้น Queue จะมีทางเข้าออกอยู่ 2 ทางนะคะ ออกข้างหน้า เข้าข้างหลังนะคะ คิว มีทางเข้าทางออก 2 ทาง เข้าข้างหลังออกข้างหน้าใช่ไหม คนมาก่อน ก็ต้องออกข้างหน้าแล้วเวลาเข้า ก็คือเข้าข้างหลังนะคะ เหมือนเราไปต่อคิวน่ะ มันมีทางเข้าทางออกกันคนละทาง คำส่งที่ใช้ในคิวมีอยู่ 2 ตัวเหมือนกัน เข้า กับเอาเข้ากับเอาออกเหมือนกันนะคะ เราจะใช้คำสั่ง EnqueueEnqeue Enter คิวนะคะ ส่วน Dequeue ก็คือเอาออก Dequeue ก็คือเอาข้อมูลออกมันก็จะตรงกับ Push กับ Popคิวก็คือ Enqueue แล้วตัวกำกับข้อมูลที่อยู่ใน Queue เราใช้ค่าอะไรเป็นตัวกำกับคิวเราก็มองเป็นลิสต์เหมือนกัน เป็นช่อง เป็นช่องนะคะ หมายเลขช่องเราเริ่มต้นหมายเลขช่องแรก ก็คือ 0 ตัวกำกับจะมี 2 ตัวนะคะ ก็คือ frontกับ rear front คือข้างหน้าrear คือข้างหลัง คือ F กับFront จะเป็นตัวบอกข้อมูลว่าตัวไหนที่จะถูกเอาออก เพราะมันเอาออกข้างหน้านะคะ จะชี้อยู่ด้านหน้า เป็นตัวบอกว่า frontกำกับอยู่ที่ช่องไหน ถ้าข้อมูงนั้นจะถูกเอาออกส่วน rear จะเป็นตัวกำกับอยู่ที่ทางเข้านะคะ rear จะบอกตำแหน่งล่าสุดของข้อมูลว่า ว่าข้อมูลตัวที่เข้าล่าสุดใน Queue อยู่ที่ตำแหน่งไหนก็ระบุค่า Index ก็คือหมายเลขช่องที่ค่าข้อมูลนั้นอยู่ คิวว่าง คิวว่าง แสดงว่ามันว่างนะ คิวว่าง ก็คือไม่มีข้อมูลอยู่ในคิวเลย 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 นะเข้าข้างหลังออกข้างหลังก็คือทางเข้า-ทางออกมันอยู่ด้านหลังนะคะ คำสั่งตัวแรกดู ครูสั่งอะไรคะ Push คือใส่ ครู Push อะไรคะ ครู Push เลข 3 คำสั่ง คือ ใส่ข้อมูลเลข 3 เพราะฉะนั้น ครูใส่ตรงไหน ใส่ข้างหลังเห็นไหมคะ ครูใส่เลข 3 เห็นไหมคะ ครูใส่เลข 3 ลงมา มันมีที่ว่างตรงไหนคะ ครูหาทีว่างใส่นะ นี่ครูเจอช่องนี้ว่างพอดีเลย เพราะฉะนั้น เลข 3 ครูก็อยู่ที่ช่องนี้ นะคะ เลข 3 นี่ครูมาอยู่ที่ช่องสุดท้าย เพราะมันมีช่องใส่อยู่ช่องเดียวน่ะ ข้างหน้ามันเต็มหมดแล้ว แล้วค่า Top จะเป็นอะไร ค่า Top เป็นอะไร เราก็ต้องดูสิว่าหมายเลขช่องนี้มันอยู่ช่องหมายเลขอะไร เราก็ต้องเริ่มเขียนจากช่องแรก ก็คือ หมายเลข 0 หมายเลข 1 หมายเลข 2 หมายเลข 3 หมายเลข 4 ถูกไหมคะ เพราะฉะนั้นแล้วนี่ ข้อมูลของครูอยู่ช่องหมายเลขอะไร หมายเลข 4 เพราะฉะนั้น ค่า Top จึงมีค่าเท่ากับ 4 เห็นไหมคะ มันตรงกันนะ ข้อมูลครูอยู่ตรงนี้ ครูมีหมายเลขช่อง คือ 4 Top ครูเลยมีค่าเท่ากับ 4 คำสั่ง Push นะคะ เดี๋ยวเรามาดูคำสั่ง 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 12 ข้อมูลตัวแรกอยู่ที่ไหนคะ ข้อมูลตัวแรกมันจะไปอยู่ที่ไหนคะ 0 ข้อมูลตัวสุดท้ายอยู่ที่ 2front บอก... front จะบอกข้อมูลตัวแรกใช่ไหมคะ ส่วน rear จะบอกข้อมูลตัวสุดท้ายถัดมาEnqueue เอาเข้า-เอาออกเอาเข้าเอาเข้าข้างหลัง เอาอะไรคะ เอา 8 เข้า เพราะฉะนั้นมันจะไปอยู่ที่ช่องหลังเลข4 มันมีหมายเลขช่องไหม มีข้างหลัง ก็คือ rear ใช่ไหม8 อยู่หมายเลข 3 ตัวแรก อยู่ช่องหมายเลข1 เห็นไหมคะ อันนี้คือช่องแรก อันนี้คือช่องสุดท้าย ถัดมา Dequeue คืออะไรคะ เอาออก เอา...เอาข้างหน้าออกใช่ไหมคะ เพราะฉะนั้น เอาหมายเลขอะไรออก หมายเลข 4เพราะฉะนั้น ข้อมูลจะเหลือแค่ 1 ตัวเพราะฉะนั้น อยู่ช่องอะไรคะ หมายเลข 2 มีข้อมูลอยู่แค่ตัวเดียว เห็นไหมคะ หมายเลขช่อง ก็คือเลข 2 ถัดมา Dequeue Dequeueคืออะไรคะ เอาออกอีกแล้วเอาอะไรออก เอา2 ออก ตอนนี้มีอะไรใน Queueไม่มี เพราะฉะนั้น จะมีค่าเป็น -1 คือ queue ว่างเมื่อกี้เราใช้คำสั่ง enqueue กับเพราะฉะนั้น Endqueue 5หมายถึงอะไรคะ เอาข้อมูลเลขอะไรเอาข้อมูลเลข 5 เข้าไปใน Queue ใช่ไหมคะ Dequeue คืออะไร เอาข้อมูล ทำไมคะ ออกจาก Queueโอเคถ้า Push คือเอาข้อมูลอะไรเอาข้อมูล 5ใส่ลงไปใน Stack5 มาจากไหนนี่นะ มันบอกนี่คำสั่งมันบอกว่าเอาเลข 5 นะคะ ส่วน Pop คืออะไร คะเอาข้อมูลออกจาก Stack เอาข้อมูลข้างหลังหรือข้างหน้าออกStack เอาข้อมูลข้างหลังหรือข้างหน้าออกข้างหลัง ถูกไหมคะ เอาข้อมูลข้างหลังออกเอาข้อมูลจากข้างหลังนะคะ ออกเดี๋ยวถ่ายรูปนะคะ ลงใน classroom หน่อยถ่ายรูปแบบฝึกหัดที่ทำนะคะ ลงใน Classroomเสร็จแล้วทุกคนถ่ายรูปนะคะ แล้วก็โพสต์ลงไปใน Classroomถ่ายให้ครบ 3 แผ่นเลยนะ มี 4 คน ทุกหน้า เสร็จแล้วเดี๋ยวครูให้เบรก 5 นาทีนะ เดี๋ยวมาขึ้นเรื่องใหม่นะคะ เดี๋ยวให้เบรกก่อนจะได้เคลียร์ของเก่า โอเค มาต่อนะคะ จะเป็นอีก 1 โครงสร้างนะ เราพูดถึง Stack กับ Queueไปแล้วนะคะ Stack กัน มันข้อมูลมันจะเรียงกันเป็นแถวอาจจะเป็นแนวตั้งหรือแนวนอนก็ได้ แต่ทีนี้ ถ้ามีข้อมูลนะคะ ที่มันไม่ได้จัดเก็บเป็นแนวข้อมูลหรือเชิงโครงสร้าง เป็นแนวตั้งหรือแนวนอนนะคะ เป็นแนวตั้ง แนวนอน แต่ข้อมูลเรานะคะ มีลักษณะการจัดเก็บเป็นลำดับชั้น แล้วเราจะเก็บข้อมูลแบบไหน เราก้จะมีรูปแบบนะคะ แบบแรกเราจะเรียกว่า "โครงสร้างข้อมูลแบบต้นไม้" แล้วก็มีอีก 1 แบบนะคะ ที่จัดเป็นแบบเชื่อมโยงเครือข่ายได้ นะคะ คือ กราฟกับต้นไม้นะเราเรียนต้นไม้ก่อน เสร็จแล้วเราจะมาเรียนกราฟลักษณะของโครงสร้างข้อมูลแบบต้นไม้จะเหมือนกับ Folder จะลักษณะเหมือนกับ Folder เลยมีตัวแม่ คลิกเข้าไปก็มีลูก ถูกไหมคะ คลิกเข้าไปก็มีตัวลูกเรื่อย ๆ นะ คราวนี้ในการจัดเก็บข้อมูลโครงสร้างข้อมูลแบบต้นไม้นะคะ เดี๋ยวเราลองจินตนาการนะ ต้นไม้นะคะ เดิม รากมันจะอยู่ด้านล่าง ถูกไหม ต้นไหมที่เราปลูกต้นไม้มันจะอยู่ด้านล่าง เรากลับดึงแรก ขึ้นมาไว้ข้างบนนะคะ ลักษณะแบบนี้ ตัวบนสุดก็คือ รูตโหนด ก็คือตัวพ่อแม่เลยน่ะ คือ รูต ถ้าเทียบกับบรรพบุรุษ ทุกคนนึกภาพโครงสร้างบรรพบุรุษที่อยู่ในบ้านเราได้นะ เราจะมีบรรพบุรุษตั้งต้นแล้วก็มีลูกหลายแตกแขนงมาเรื่อย ๆ นะคะ ลักษณะแบบเดียวกัน บนสุด คือ บรรพบุรุษโหนดคือต้นกำเนิดเลย แต่รูตโหนดเรามีอยู่แค่ 1 โหนดเท่านั้นนะคะ ตัววงกลมนี่จะเรียกว่า "โหนด" ตัวกลม ๆ จะเรียกว่า "โหนด" เสร็จแล้วนี่ นี่คือบรรพบุรุษถูกหรือเปล่า บรรพบุรุษนี่ ก็มีลูก เห็นไหมคะ บรรพบุรุษก็มีลูก ลูกก็มีหลานออกมาใช่ไหมคะ กลุ่มนี้ คือพี่น้องนะ คือพี่น้องที่มีพ่อเดียวกันกลุ่มนี้นะคะ ด้านซ้ายกับด้านขวาเป็นลูกพี่ลูกน้อง ใช่ไหม เป็นลูกพี่ลูกน้อง อันนี้คือพ่อเรา อันนี้... คือลูกพี่ลูกน้องเราโอเค ตัวที่อยู่ล่างสุดนะคะ ตัวที่อยู่ล่างสุด เราจะมีชื่อเรียกว่า "ลิสต์โหนด ก็คือเราเป็นรุ่นยังไม่มีใครต่อจากเราเรายังไม่ได้แต่งงานถูกไหมคะ เราจะเปรียบเป็นลีฟโหนดของตระกูลนะ เป็นคนล่างสุด เป็นคนชั้นสุดท้าย ล่างสุดของตระกูลนะคะ เราจะเห็นว่าลักษณะของโครงสร้างข้อมูลแบบนี้เราเห็นเป็นลำดับชั้นถูกไหมคะ อันนี้เป็นชั้นที่ 1 ชั้นที่ 2 ชั้นที่ 3 ไล่ลงมาเรื่อย ๆ นะคะ โอเคตัวบนสุด เรียกว่า "root node rootคือ root node คือ โหนดแม่ ตัวล่างสุดเรียกว่า "ลีฟโหนด" นะคะ คือ ลีฟโหนด คือ ตัวสุดท้าย จะเห็นว่าลีฟโหนด มี 7 มี 9 มี 15มี 45 แล้วก็ 77 พวกนี้ที่อยู่ล่างสุดนี่ เรียกว่า "ลีฟโหนด" ทั้งหมดเลย ข้างบน ข้างบนเลข 7 คือ พ่อนะแม่นะคะ เราเรียกพ่อนะ พ่อของ 7คือ 13 ลูกของ 13 คือ 7, 915 นะคะ พ่อของ 13 คืออะไร 23 โอเคคราวนี้ จากตรงนี้นะคะ เราดูการเรียกชื่อ หรือว่าลำดับของการเรียกชื่อ โหนดที่ 23 มันอยู่บนสุด เราจะเรียกว่ามันคือ "รูตโหนด" ตัวนี้นะคะ โหนดที่อยู่บนสุด ก็คือ root nodeตัวนี้นะคะ เพราะว่ามันคือโหนดแรกสุดนะ ถัดมาโหนด 23 นี่ เชื่อมไปยังโหนด 13 กับ 54 นะคะ มันเป็นพ่อของ 13 กับ 54 นะมันเป็นพ่อของ 13 กับ 54เสร็จแล้ว 13 กับ 54 นี่เป็นลูก เป็นลูกของ 23 นะคะ 7 9 15 โหนด 7 โหนด 9 โหนด 15เป็นลูกของโหนด 13ลิฟโหนดคือโหนดล่างสุดของต้นไม้นะ โหนดที่อยู่ด้านล่างสุดของแต่ละกิ่งของต้นไม้ ไม่มีอะไรต่อลงไปอีกแล้ว เราเรียกตัวนั้นว่า "ลีฟโหนด" ะคะ เห็นไหม เริ่มต้น รูตโหนด คือ 23 นะคะ คราวนี้ระดับของโหนด ก็คือลำดับชั้นของโหนดน่ะ เราเริ่มที่ลำดับ 0 นะคะ ลำดับชั้นของนะคะ ลำดับชั้นของต้นไม้นะคะ เราเราเริ่มต้นที่ 0 เพราะฉะนั้น ตัวบนสุด จะอยู่ระดับ 0 นะคะ 15... 3 กับ 54 จะอยู่ระดับ 1 ระดับ 2 ระดับ 3 ไล่ลงมาเรื่อย ๆ โหนดพ่อ พ่อก็คืออยู่สูงกว่าตัวเองเห็นไหม ลูกก็คือ ณ โหนดที่กล่าวถึงนี่ พ่อก็คืออยู่ระดับสูงขึ้นไป ลูกก็คืออยู่ลงไป 1 ชั้นนะคะ โหนดพี่น้อง จะเป็นพี่น้องกันได้ต้องพ่อเดียวกัน 7, 9, 15 เป็นพี่น้อง เพราะมีพ่อเดียวกันถูกไหม เพราะมีพ่อเดียวกันแต่ 46 กับ 77ก็เป็นพี่น้องกันถูกไหมคะ พ่อเดียวกัน เป็นลูกพี่ลูกน้องกันนะ เป็นญาติกัน เป็นลูกพี่ลูกน้องกันลีฟโหนด ก็คือโหนดล่างสุด ไม่มีอะไรทิ่มลงไปแล้ว ไม่มีอะไรแตกออกมาอีกแล้ว โหนดนี้ไม่มีอะไรแตกออกมาอีกแล้ว มันสุดท้ายแล้วส่วนดีกรี ดีกรี คือ จำนวนลูกทั้งหมดของโหนดที่กล่าวถึง เช่น ดีกรีของ 46 คืออะไร คือ 1ดีกรี คือ จำนวนลูก ดีกรีคือจำนวนลูกนะคะ 46 มีลูกอยู่ 113 มีลูกอยู่ 3 47มีลูกไหมคะ ไม่มี77 มีลูกไหม ไม่มี เพราะฉะนั้น ดีกรีมีค่าเป็นอะไรคะ เป็น 0มีกระดาษไหม หยิบกระดาษให้ครูหน่อยครูมีรูป ครูมีรูปนี้นะคะ เขียนด้านหลังกระดาษที่ครูให้ไปครั้งที่แล้วก็ได้ ตอบให้ครูหน่อย ตอบอะไรเอ่ย วาดรูปก่อนนะ แล้วก็ตอบว่าข้อ 1 โหนดคืออะไร ข้อ 2 ข้อ 3 ข้อ 4 ข้อ 5 ข้อ 6 ข้อ 7 ใครมีสมุด ทำลงสมุดนะคะ วาดรูปด้านซ้ายก่อน แล้วก็เขียนตอบด้านขวา ลอกโจทย์ด้วยนะ เช่นระดับของโหนด 30 คือ... ตอบมา อันนี้ครูก๊อป(ปี้) ก๊อปฯ คำอธิบายมาให้นะคะ จะได้เห็นด้วย root node คืออะไร ระดับของโหนดคืออะไร ดีกรีคืออะไร คราวนี้ดูอีกทีหนึ่งนะดูอีกทีหนึ่งนะ ในโหนดนะคะ ที่ครูให้... เดี๋ยวนะ จากต้นไม้นะคะ ที่เราเห็นต้นนี้นะ จากต้นไม้ต้นนี้ ที่เราเห็น 1 ต้นนี่ ถ้าเราพูดถึงพ่อนะคะ พ่อแสดงว่าคนที่อยู่สูงกว่าเรา พ่อของเรานี่ แสดงว่าลำดับชั้นนี่จะอยู่สูงกว่าถูกไหมคะ ลูกของเราจะต้องอยู่ต่ำกว่าเรานะคะ อย่างเช่น 55 นะคะ ครูพูดถึง 55 พ่อของ 55 คืออะไร พ่อก็อยู่ข้างบนถูกไหมคะ ก็คือ50 ถูกไหม อันนี้คือพ่อ55 คือ ลูกของ 50 ถูกไหมคะ ลูกของ 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 อยู่ระดับไหนคะ ระดับ 255 ดีกรีคืออะไรคะ จำนวนลูก มีลูกกี่คน 55 มีลูกกี่คน คนเดียวนะคะ นี่ไง55 มีลูกกี่คน มีลูกคนเดียวนะคะ เห็นไหมก็ตอบ 1 ดีกรีของ 55 คือ 1คือ 1 ดูนะคะ ครูให้วาดต้นไม้เครือญาตินะสมชายเป็นต้นตระกูล สมชายอยู่บนสุด สมชายมีลูก 2 คน คือ A กับ B A มีลูก 1 คน ชื่อ C Bมีลูดอีก 3 คน ชื่อ D E Fและ F ก็มีลูก 1 คน ชื่อ Z วาดต้นไม้เครือญาติให้ครูหน่อย เราเริ่มต้นถูกไหมคะ ต้นตระกูลของบ้านหลังนี้คือใคร คือ สมชาย เพราะทุกคนต้องมีสมชายเป็นจุดเริ่มต้นนะคะ เป็นต้นตระกูลของบ้านน้อย สมชายมีลุกกี่คน2 คน ใช่ไหมช่วยครูวาดต่อหน่อย คือ A กับ B เราวาดต่อให้ครูหน่อยA มีลูก 1 คน ชื่อ C ชื่อ 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พี่น้องของ D Dog มีใครบ้าง E กับ F ใช่ไหมคะ พี่น้องของ D DogC มีพี่น้องไหมคะ C มีพี่น้องไหม ไม่มี C ไม่มีพี่น้องนะคะ C ไม่มีพี่น้อง Z มีพี่น้องไหมไม่มีเป็นลูกคนเดียวเหมือนกัน Z ก็เป็นลูกคนเดียวโอเค จากเครือตรงนี้ใช่ไหมคะ เราวาดได้ต้นไม้ 1 ต้นนะ ถัดมาต้นไม้นี่ ในต้นไม้นะคะ เราสามารถมีต้นไม้ย่อยที่อยู่ภายในต้นไม้ได้ เช่น จากรูปนี้ ตรงนี้ ฝั่งซ้ายของ 23 ก็คือต้นไม้ย่อยนะ ของ 23 ฝั่งขวาตรงนี้ก็คือต้นไม้ย่อยนะคะ เห็นไหม เพราะว่ามันมีกิ่งก้านสาขาแตกลงมา ตรงนี้ก็เลยเป็นต้นไม้ย่อย ลักษณะของต้นไม้นะคะ เดี๋ยวเราจบที่ลักษณะของต้นไม้ ลักษณะของต้นไม้ที่เราจะพูดถึง ตัวแรก Binary Treeไบ คือ 2Binary Tree ก็คือต้นไม้ที่มีลูกได้ไม่เกิน 2 โหนดถูกไหมคะ ต้นไม้นี่ มีลูกได้ไหม เกิดน 2 เห็นไหม มีได้ไม่เกิน 2 มี 1 ก็ได้นะ มี 2ก็ได้ ไม่มีก้ได้ แต่มี 3 ไม่ได้นะคะ มีลูก 3 ไม่เข้าข่ายตัวนี้นะ เป็นต้นไม้เฉย ๆ แต่ไม่ใช่ต้นไม้Binary Treeอีก 1 ต้นไม้นะคะ BST ตรงนี้BST ตัวนี้ หรือ Binary Search Tree มีลูก 2 เห็นไหมคะ มีลูก 2 หรือมีลูก 1 ก็ได้ แต่สิ่งที่เพิ่ม คือ ลูกด้านซ้าย ดูที่ 8 นะ ลูกด้านซ้าย ด้านซ้ายน้อยกว่าพ่อลูกด้านขวามากกว่าพ่อ ซ้าย น้อยกว่าพ่อขวามากกว่าพ่อ ตัวนี้คือ BiBST หรือว่า Binary Search Treeสังเกตง่าย ๆ เห็นไหมคะ ด้านขวาทุกตัว มากกว่า 8 เลย แต่ด้านซ้ายทุกตัวต้องน้อยกว่า 8รูปนี้เหมือนกัน ด้านขวามากกว่า 50 ด้านซ้ายน้อยกว่า 50 นะคะ รูปนี้เหมือนกัน บนสุดคือ 7 ถูกหรือเปล่าต้องน้อยกว่า 7 ด้านขวาต้องมากกว่า 7 โอเค มี 3 แบบนะ มีต้นไม้ธรรมดา ทุกอย่างเป็นต้นไม้นะ มีต้นไม้ธรรมดามี Binary Tree ลูก 2แล้วก็ BST ลูก 2 เหมือนกันแต่ลูกด้านซ้ายน้อยกว่าพ่อ ลูกด้านขวามีค่ามากกว่าพ่อโอเค เห็นไหม นะ เดี่ยวคราวหน้าเดี๋ยวครูจะมาทวนต้นไม้อีกครั้งหนึ่ง แล้วเราก็พูดถึงเรื่องต้นไม้ต่อ เราจะเพิ่มโหนดเข้าไปในต้นไม้ทำอย่างไร จะลบโหนดออกจากต้นไม้ทำอย่างไรนะคะ โอเคนะคะ เดี๋ยวสัปดาห์หน้าเดี๋ยวเรามาเจอกันอีก วันนี้ก็น่าจะพอแค่นี้ เดี๋ยวครูเช็กชื่อ คราวนี้นะคะ สัปดาห์หน้า พอดีว่าครูติดลงพื้นที่ ครูอยากจะขยับเลื่อนเป็นพฤหัสบดีบ่าย