Pārlūkot izejas kodu

leftRotate now works

Natalie Pueyo 8 gadi atpakaļ
vecāks
revīzija
edc46bee83
1 mainītis faili ar 17 papildinājumiem un 20 dzēšanām
  1. 17 20
      program3/AVLCommands.cpp

+ 17 - 20
program3/AVLCommands.cpp

@@ -178,43 +178,40 @@ std::shared_ptr<BSTNode> AVLCommands::leftRotate(std::shared_ptr<BSTNode> curren
 	}
 	std::cout << "Left Rotate at node " << currentNode->key_ << std::endl;
 
-	std::shared_ptr<BSTNode> newSubroot = currentNode->right_;
-
-
-	currentNode->right_ = newSubroot->left_;
-	if (newSubroot->left_ != nullptr) {
-		newSubroot->left_->parent_ = currentNode;
+	std::shared_ptr<BSTNode> newSubRoot = currentNode->right_;
+	currentNode->right_ = newSubRoot->left_;
+	if (newSubRoot->left_ != nullptr) {
+		newSubRoot->left_->parent_ = currentNode;
 	}
-
-	newSubroot->left_ = currentNode;
+	newSubRoot->left_ = currentNode;
 
 	std::shared_ptr<BSTNode> oldParent = currentNode->parent_.lock();
 
-	//std::cout << "New subtree root: " << y->key_ << std::endl;
+	currentNode->parent_ = newSubRoot;
+
+	std::cout << "New subtree root: " << newSubRoot->key_ << std::endl;
 	//std::cout << "New left: " << y->left_->key_ << std::endl;
 	//std::cout << "New right: " << y->right_->key_ << std::endl;
 
 	if (oldParent == nullptr) {
-		root_ = newSubroot;
-		newSubroot->parent_.reset();
+		root_ = newSubRoot;
+		newSubRoot->parent_.reset();
 	} else {
-		if (oldParent->right_ == currentNode) {
-			oldParent->right_ = newSubroot;
-		} else {
-			oldParent->left_ = newSubroot;
+		if (oldParent->right_== currentNode) {
+			oldParent->right_ = newSubRoot;
+		}else{
+			oldParent->left_ = newSubRoot;
 		}
-
-		newSubroot->parent_ = oldParent;
+		newSubRoot->parent_ = oldParent;
 	}
 
-	//currentNode = y;
-
 	std::cout << "hello" << std::endl;
 	//printTree();
   //  Update heights
+	//printTree();
 	height(root_);
   // Return new root
-  return newSubroot;
+  return newSubRoot;
 }
 
 void AVLCommands::printTree(){