Sobes.tech
Junior — Middle

Magyarázza el a bináris fa transzformációs eljárását az adatok redundanciájának kiküszöbölése és az elemek egyedisége érdekében.

sobes.tech MI

Válasz az MI-től

Az adatok redundanciájának eltávolítása és az elemek egyedisége érdekében általában egy olyan adatszerkezetre történő átalakítást alkalmaznak, amelyet bináris keresőfának (BST) neveznek, vagy annak variációinak.

A folyamat a következő lépéseket tartalmazhatja:

  1. Fa bejárása — például in-order bejárással, hogy minden elemet megszerezzenek.
  2. Duplikátumok eltávolítása — a bejárás során az elemeket olyan adatszerkezetben lehet tárolni, amely nem enged ismétlődéseket (például halmazban).
  3. Új fa építése — az egyedi elemek alapján egy új bináris keresőfát hoznak létre, ahol minden csomópontnál a bal oldali részfa összes eleme kisebb, a jobb oldali pedig nagyobb.

Ez biztosítja:

  • Az elemek egyediséget.
  • Gyors keresést, beszúrást és törlést.

Példa Swiftben (iOS):

class TreeNode {
    var value: Int
    var left: TreeNode?
    var right: TreeNode?

    init(_ value: Int) {
        self.value = value
    }
}

func inorderTraversal(_ root: TreeNode?, _ result: inout [Int]) {
    guard let node = root else { return }
    inorderTraversal(node.left, &result)
    result.append(node.value)
    inorderTraversal(node.right, &result)
}

func buildBST(_ values: [Int]) -> TreeNode? {
    var root: TreeNode?
    for value in values {
        root = insertIntoBST(root, value)
    }
    return root
}

func insertIntoBST(_ root: TreeNode?, _ value: Int) -> TreeNode? {
    guard let node = root else { return TreeNode(value) }
    if value < node.value {
        node.left = insertIntoBST(node.left, value)
    } else if value > node.value {
        node.right = insertIntoBST(node.right, value)
    }
    return node
}

// Használat:
var elements = [Int]()
inorderTraversal(originalRoot, &elements)
let uniqueElements = Array(Set(elements)).sorted()
let newRoot = buildBST(uniqueElements)

Így a bináris fa átalakítása magában foglalja a bejárást, az egyedi értékek szűrését és az új fa felépítését egyedi elemekkel.