두 갈래 트리 체인 테이블의 구현: Insert()
4406 단어 insert
나중에 나의 해결 방법은 차례차례 돌아오는 것이다.
class BinarySearchTree { private: // do something... PTreeNode MakeNewNode (const int32_t& value) { auto newNode = make_shared<TreeNode> (); newNode->key = value; return move(newNode); } void InsertIter (PTreeNode& node, const int32_t& value) { if (node == nullptr) { node = MakeNewNode (value); } else { if (node->key < value) { InsertIter (node->rightNode, value); } else { InsertIter (node->leftNode, value); } } } public: void Insert (const int32_t& value) { InsertIter (root, value); } // other functions... };
나중에 알 수 있듯이 @ 언덕 아래 자갈의 해답을 보고 계발을 많이 받아 교체 버전이 생겼다.
struct TreeNode { int32_t key = 0; PTreeNode leftNode = nullptr; PTreeNode rightNode = nullptr; PTreeNode& MoveToNextNode(const int32_t& value) { return key < value ? rightNode : leftNode; } }; class BinarySearchTree { private: PTreeNode root; PTreeNode MakeNewNode(const int32_t& value) { auto newNode = std::make_shared<TreeNode>(); newNode->key = value; return newNode; } public: void Insert(const int32_t& value) { if (root == nullptr) { root = MakeNewNode(value); } else { PTreeNode current = root; while (true) { PTreeNode& p = current->MoveToNextNode(value); if (p == nullptr) { p = MakeNewNode(value); break; } current = p; } } } };
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MyBatis에서 insert 작업이 주 키를 되돌리는 방법myBatis를 지구층으로 사용할 때 insert 문장은 기본적으로 기록된 키 값을 되돌려주지 않고 삽입된 기록 줄의 수를 되돌려줍니다.만약 업무층이 기록된 메인 키를 필요로 할 때, 설정 방식을 통해 이 기능을 완...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.