คำถามติดแท็ก binary-tree

โครงสร้างข้อมูลแบบทรีที่แต่ละโหนดมีโหนดลูกมากที่สุดสองโหนด


12
ความแตกต่างระหว่างต้นไม้ไบนารีและต้นไม้ค้นหาแบบทวิภาค
ทุกคนสามารถอธิบายความแตกต่างระหว่างแผนภูมิต้นไม้และต้นไม้ค้นหาแบบไบนารี ด้วยตัวอย่างได้หรือไม่?

7
ข้ามรายการเทียบกับแผนภูมิการค้นหาแบบไบนารี
ฉันเพิ่งมาข้ามโครงสร้างข้อมูลที่รู้จักกันเป็นรายการเฮี๊ยบ ดูเหมือนว่าจะมีพฤติกรรมที่คล้ายกันมากกับแผนภูมิการค้นหาแบบไบนารี ทำไมคุณถึงต้องการใช้รายการข้ามข้ามแผนภูมิการค้นหาแบบไบนารี

30
วิธีการค้นหาบรรพบุรุษร่วมที่ต่ำที่สุดของสองโหนดในต้นไม้ไบนารีใด ๆ ?
แผนผังไบนารีที่นี่อาจไม่จำเป็นต้องเป็นแผนผังการค้นหาแบบไบนารี โครงสร้างสามารถนำมาเป็น - struct node { int data; struct node *left; struct node *right; }; วิธีแก้ปัญหาสูงสุดที่ฉันสามารถทำได้กับเพื่อนคืออะไรบางอย่างในประเภทนี้ - พิจารณาต้นไม้ไบนารีนี้ : อัตราการเคลื่อนที่ผ่านของ inorder - 8, 4, 9, 2, 5, 1, 6, 3, 7 และผลตอบแทนการสำรวจเส้นทาง postorder - 8, 9, 4, 5, 2, 6, 7, 3, 1 ตัวอย่างเช่นถ้าเราต้องการหาบรรพบุรุษร่วมของโหนด 8 และ 5 จากนั้นเราจะทำรายการโหนดทั้งหมดที่อยู่ระหว่าง 8 และ …

8
Heap vs Binary Search Tree (BST)
ฮีปและ BST แตกต่างกันอย่างไร เมื่อใดจึงควรใช้ฮีปและเมื่อใช้ BST ถ้าคุณต้องการที่จะได้รับองค์ประกอบในการเรียงลำดับ BST จะดีกว่ากอง?


12
อนุญาตให้ใช้คีย์ที่ซ้ำกันในคำจำกัดความของแผนภูมิการค้นหาแบบไบนารีหรือไม่
ฉันพยายามค้นหาคำจำกัดความของแผนภูมิการค้นหาแบบไบนารีและฉันค้นหาคำจำกัดความที่แตกต่างกันทุกที่ บางคนบอกว่าสำหรับทรีย่อยที่กำหนดคีย์ลูกด้านซ้ายจะน้อยกว่าหรือเท่ากับรูท บางคนบอกว่าสำหรับทรีย่อยใด ๆ คีย์ลูกที่ถูกต้องจะมีค่ามากกว่าหรือเท่ากับราก และหนังสือโครงสร้างข้อมูลวิทยาลัยเก่าของฉันบอกว่า "ทุกองค์ประกอบมีคีย์และไม่มีสององค์ประกอบที่มีคีย์เดียวกัน" มีคำจำกัดความสากลของ bst หรือไม่? โดยเฉพาะอย่างยิ่งเกี่ยวกับสิ่งที่จะทำกับต้นไม้ที่มีหลายอินสแตนซ์ของคีย์เดียวกัน แก้ไข: บางทีฉันไม่ชัดเจนคำจำกัดความที่ฉันเห็นคือ 1) left <= root <right 2) ซ้าย <root <= ขวา 3) ซ้าย <root <ขวาซึ่งไม่มีคีย์ที่ซ้ำกันอยู่

8
อธิบายการข้ามต้นไม้ตามลำดับของมอร์ริสโดยไม่ต้องใช้สแต็คหรือการเรียกซ้ำ
ใครช่วยกรุณาช่วยฉันทำความเข้าใจอัลกอริทึมการเดินทางข้ามต้นไม้ตามลำดับมอร์ริสต่อไปนี้โดยไม่ต้องใช้สแต็กหรือการเรียกซ้ำ ฉันพยายามเข้าใจว่ามันทำงานอย่างไร แต่มันก็หนีฉันไป 1. Initialize current as root 2. While current is not NULL If current does not have left child a. Print current’s data b. Go to the right, i.e., current = current->right Else a. In current's left subtree, make current the right child of the rightmost node b. …

27
จะตรวจสอบได้อย่างไรว่าต้นไม้ไบนารีสมดุลหรือไม่?
เป็นเวลานานจากโรงเรียนเหล่านั้น ได้งานเป็นผู้เชี่ยวชาญด้านไอทีที่โรงพยาบาล พยายามที่จะย้ายไปทำรายการจริงบางอย่างในขณะนี้ ตอนนี้ฉันกำลังทำงานกับต้นไม้ไบนารีและฉันสงสัยว่าอะไรจะเป็นวิธีที่ดีที่สุดในการพิจารณาว่าต้นไม้มีความสมดุลของความสูงหรือไม่ ฉันกำลังคิดบางอย่างจากสิ่งนี้: public boolean isBalanced(Node root){ if(root==null){ return true; //tree is empty } else{ int lh = root.left.height(); int rh = root.right.height(); if(lh - rh > 1 || rh - lh > 1){ return false; } } return true; } นี่เป็นการใช้งานที่ดีหรือไม่? หรือฉันขาดอะไรไป?

30
ค้นหาองค์ประกอบที่เล็กที่สุด kth ในโครงสร้างการค้นหาแบบไบนารีด้วยวิธีที่เหมาะสมที่สุด
ฉันต้องการค้นหาองค์ประกอบที่เล็กที่สุด kth ในโครงสร้างการค้นหาไบนารีโดยไม่ต้องใช้ตัวแปรคงที่ / ทั่วโลก จะบรรลุอย่างมีประสิทธิภาพได้อย่างไร? วิธีแก้ปัญหาที่ฉันคิดไว้คือการดำเนินการใน O (n) ซึ่งเป็นกรณีที่เลวร้ายที่สุดเนื่องจากฉันวางแผนที่จะทำการลัดเลาะตามลำดับของต้นไม้ทั้งหมด แต่ลึก ๆ แล้วฉันรู้สึกว่าไม่ได้ใช้คุณสมบัติ BST ที่นี่ วิธีแก้ปัญหาสมมติของฉันถูกต้องหรือมีวิธีที่ดีกว่านี้หรือไม่?


7
Big O (logn) log base e หรือไม่?
สำหรับโครงสร้างข้อมูลประเภทต้นไม้ค้นหาแบบไบนารีฉันเห็นสัญกรณ์ Big O โดยทั่วไปจะระบุเป็น O (logn) ด้วยตัวพิมพ์เล็ก 'l' ในบันทึกนี่หมายความว่าล็อกฐาน e (n) ตามที่อธิบายโดยลอการิทึมธรรมชาติหรือไม่ ขออภัยสำหรับคำถามง่ายๆ แต่ฉันมักจะมีปัญหาในการแยกแยะระหว่างลอการิทึมโดยนัยที่แตกต่างกัน

5
เมื่อใดควรใช้กลยุทธ์ Preorder, Postorder และ Inorder Binary Search Tree Traversal
เมื่อเร็ว ๆ นี้ฉันตระหนักว่าในขณะที่ใช้ BST มากมายในชีวิตฉันไม่เคยคิดแม้แต่จะใช้อะไรเลยนอกจาก Inorder traversal (ในขณะที่ฉันตระหนักและรู้ว่าการปรับโปรแกรมให้ใช้การส่งผ่านคำสั่งก่อน / หลังการสั่งซื้อนั้นง่ายเพียงใด) เมื่อตระหนักถึงสิ่งนี้ฉันจึงดึงตำราโครงสร้างข้อมูลเก่าของฉันออกมาและมองหาเหตุผลที่อยู่เบื้องหลังประโยชน์ของการสั่งซื้อล่วงหน้าและการสั่งซื้อภายหลังการสั่งซื้อ - พวกเขาไม่ได้พูดอะไรมากนัก มีตัวอย่างอะไรบ้างในการใช้ preorder / postorder ในทางปฏิบัติ? เมื่อใดที่เหมาะสมกว่าตามลำดับ

4
ค้นหาว่าต้นไม้เป็นต้นไม้ค้นหาแบบทวิภาคใน Haskell หรือไม่
type BSTree a = BinaryTree a data BinaryTree a = Null | Node (BinaryTree a) a (BinaryTree a) deriving Show flattenTree :: BinaryTree a -> [a] flattenTree tree = case tree of Null -> [] Node left val right -> (flattenTree left) ++ [val] ++ (flattenTree right) isBSTree :: (Ord …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.