Code Duplication    Length = 48-49 lines in 2 locations

DataStructures/Trees/AVLTree.php 2 locations

@@ 48-96 (lines=49) @@
45
     * rotated.
46
     * @return DataStructures\Trees\Nodes\AVLNode
47
     */
48
    private function rightRotation(AVLNode &$node) {
49
        $temp = &$node->left;
50
        $temp->parent = &$node->parent;
51
52
        $node->left = &$temp->right;
53
        if ($node->left !== null) {
54
            $node->left->parent = &$snode;
55
        }
56
57
        $temp->right = &$node;
58
        $node->parent = &$temp;
59
60
        // temp took over node's place so now its parent should point to temp
61
        if ($temp->parent !== null) {
62
            if ($node === $temp->parent->left) {
63
                $temp->parent->left = &$temp;
64
            } else {
65
                $temp->parent->right = &$temp;
66
            }
67
        } else {
68
            $this->root = &$temp;
69
        }
70
        
71
        return $temp;
72
    }
73
74
    /**
75
     * Does a right rotation.
76
     *
77
     * @param DataStructures\Trees\Nodes\AVLNode $node The node to be
78
     * rotated.
79
     * @return DataStructures\Trees\Nodes\AVLNode
80
     */
81
    private function leftRotation(AVLNode &$node) {
82
83
        $temp = &$node->right;
84
        $temp->parent = &$node->parent;
85
86
        $node->right = &$temp->left;
87
88
        if ($node->right !== null) {
89
            $node->right->parent = &$node;
90
        }
91
92
        $temp->left = &$node;
93
        $node->parent = &$temp;
94
95
        // temp took over node's place so now its parent should point to temp
96
        if ($temp->parent !== null) {
97
            if ($node == $temp->parent->left) {
98
                $temp->parent->left = &$temp;
99
            } else {
@@ 81-128 (lines=48) @@
78
     * rotated.
79
     * @return DataStructures\Trees\Nodes\AVLNode
80
     */
81
    private function leftRotation(AVLNode &$node) {
82
83
        $temp = &$node->right;
84
        $temp->parent = &$node->parent;
85
86
        $node->right = &$temp->left;
87
88
        if ($node->right !== null) {
89
            $node->right->parent = &$node;
90
        }
91
92
        $temp->left = &$node;
93
        $node->parent = &$temp;
94
95
        // temp took over node's place so now its parent should point to temp
96
        if ($temp->parent !== null) {
97
            if ($node == $temp->parent->left) {
98
                $temp->parent->left = &$temp;
99
            } else {
100
                $temp->parent->right = &$temp;
101
            }
102
        } else {
103
            $this->root = &$temp;
104
        }
105
        
106
        return $temp;
107
    }
108
109
    /**
110
     * Double right rotation does first a left rotation of right child node
111
     * that detects the imbalance and finally does a right rotation
112
     * in the subtree root that detects the imbalance.
113
     * Case Right-Left.
114
     *
115
     * @param DataStructures\Trees\Nodes\AVLNode $node The node to be
116
     * rotated.
117
     * @return DataStructures\Trees\Nodes\AVLNode
118
     */
119
    private function doubleRightRotation(AVLNode &$node) {
120
        $this->leftRotation($node->left);
121
        return $this->rightRotation($node);
122
    }
123
124
    /**
125
     * Double left rotation does first a right rotation of left child node
126
     * that detects the imbalance and finally does a left rotation
127
     * in the subtree root that detects the imbalance.
128
     * Case Left-Right.
129
     *
130
     * @param DataStructures\Trees\Nodes\AVLNode $node The node to be
131
     * rotated.