From b8eb636bfd8810c6ba4a9a1142c712122d1be27d Mon Sep 17 00:00:00 2001 From: kyt_2002 Date: Thu, 5 Oct 2023 19:04:02 +0800 Subject: [PATCH] Update test_rbtree.h --- .../app_test/test_rbtree/test_rbtree.h | 79 +++++++++---------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/APP_Framework/Applications/app_test/test_rbtree/test_rbtree.h b/APP_Framework/Applications/app_test/test_rbtree/test_rbtree.h index b9592ac82..9f083f47f 100644 --- a/APP_Framework/Applications/app_test/test_rbtree/test_rbtree.h +++ b/APP_Framework/Applications/app_test/test_rbtree/test_rbtree.h @@ -1,60 +1,59 @@ -/* -* Copyright (c) 2023 AIIT XUOS Lab -* XiUOS is licensed under Mulan PSL v2. -* You can use this software according to the terms and conditions of the Mulan PSL v2. -* You may obtain a copy of Mulan PSL v2 at: -* http://license.coscl.org.cn/MulanPSL2 -* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, -* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, -* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. -* See the Mulan PSL v2 for more details. -*/ - -/** -* @file: test_rbtree.h -* @brief: a head file of red-black tree structure -* @version: 1.0 -* @author: AIIT XUOS Lab -* @date: 2023/6/23 -*/ #ifndef REDBLACKTREE_H_ #define REDBLACKTREE_H_ + +/* + * redblacktree.h + * + * 本文件包含红黑树(Red-Black Tree)的定义和相关函数声明。 + * 红黑树是一种自平衡的二叉搜索树,用于在O(log n)时间内进行插入、删除和查找操作。 + */ + #include #include -typedef struct RedBlackNode -{ - int key; - struct RedBlackNode *left_child; - struct RedBlackNode *right_child; - struct RedBlackNode *parent; - bool is_red; +// 红黑树节点结构 +typedef struct RedBlackNode { + int key; // 键值 + struct RedBlackNode *left_child; // 左子节点指针 + struct RedBlackNode *right_child; // 右子节点指针 + struct RedBlackNode *parent; // 父节点指针 + bool is_red; // 红色节点为true,黑色节点为false } RBNodeType; -typedef struct RedBlackTree -{ - RBNodeType *root; - RBNodeType *leaf; +// 红黑树结构 +typedef struct RedBlackTree { + RBNodeType *root; // 根节点指针 + RBNodeType *leaf; // 表示NIL的叶子节点 } RBTreeType; -void TestRBTree(void); - +// 先序遍历红黑树,输出节点的键值和颜色 void RBTreeTraversal(RBTreeType *tree, RBNodeType *node); +// 左旋转操作 void RBTreeLeftRotate(RBTreeType *tree, RBNodeType *current_node); -void RBTreeRightRotate(RBTreeType *tree, RBNodeType* current_node); +// 右旋转操作 +void RBTreeRightRotate(RBTreeType *tree, RBNodeType *current_node); -void InsertFixup(RBTreeType *tree, RBNodeType* current_node); +// 插入节点后的修复操作 +void InsertFixup(RBTreeType *tree, RBNodeType *current_node); -void RBTreeInsert(RBTreeType *tree, RBNodeType* new_node); +// 向红黑树中插入新节点 +void RBTreeInsert(RBTreeType *tree, RBNodeType *new_node); -void DeleteFixup(RBTreeType *tree, RBNodeType* current_node); +// 删除节点后的修复操作 +void DeleteFixup(RBTreeType *tree, RBNodeType *current_node); -void RBTreeDelete(RBTreeType *tree, RBNodeType* target_node); +// 从红黑树中删除指定节点 +void RBTreeDelete(RBTreeType *tree, RBNodeType *target_node); -RBNodeType* FindSuccessor(RBTreeType *tree, RBNodeType* current_node); +// 寻找后继节点 +RBNodeType *FindSuccessor(RBTreeType *tree, RBNodeType *current_node); -RBNodeType* RBTreeSearch(RBTreeType *tree, int key); +// 在红黑树中搜索指定键值的节点 +RBNodeType *RBTreeSearch(RBTreeType *tree, int key); -#endif \ No newline at end of file +// 测试红黑树的功能 +void TestRBTree(void); + +#endif // REDBLACKTREE_H_