Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
TinySTL
提交
590652f0
T
TinySTL
项目概览
OpenDocCN
/
TinySTL
通知
4
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TinySTL
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
590652f0
编写于
1月 14, 2015
作者:
邹
邹晓航
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
bug fix
上级
821dc0ff
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
72 addition
and
27 deletion
+72
-27
TinySTL/BinarySearchTree.h
TinySTL/BinarySearchTree.h
+1
-1
TinySTL/Detail/BinarySearchTree.impl.h
TinySTL/Detail/BinarySearchTree.impl.h
+9
-19
TinySTL/Test/BinarySearchTreeTest.cpp
TinySTL/Test/BinarySearchTreeTest.cpp
+1
-1
TinySTL/Test/BinarySearchTreeTest.h
TinySTL/Test/BinarySearchTreeTest.h
+4
-0
TinySTL/TinySTL.vcxproj
TinySTL/TinySTL.vcxproj
+14
-2
TinySTL/TinySTL.vcxproj.filters
TinySTL/TinySTL.vcxproj.filters
+43
-4
未找到文件。
TinySTL/BinarySearchTree.h
浏览文件 @
590652f0
...
...
@@ -93,7 +93,7 @@ namespace TinySTL{
const
T
*
ptr_
;
cntrPtr
container_
;
stack
<
const
T
*>
parent_
;
//保存从root到ptr_的父节点的路径
std
::
set
<
const
T
*>
rvisited_
;
//当前节点的右子树是否被访问过
//
std::set<const T *> rvisited_;//当前节点的右子树是否被访问过
std
::
set
<
const
T
*>
visited_
;
//当前节点是否被访问过(此node被访问说明其左子树已被访问了)
public:
bst_iter
(
const
T
*
ptr
,
cntrPtr
container
);
...
...
TinySTL/Detail/BinarySearchTree.impl.h
浏览文件 @
590652f0
...
...
@@ -12,6 +12,8 @@ namespace TinySTL{
while
(
temp
&&
temp
!=
ptr_
&&
temp
->
data_
!=
ptr_
->
data_
){
parent_
.
push
(
temp
);
if
(
temp
->
data_
<
ptr_
->
data_
){
//temp向右走说明temo指向的父节点不需要再次访问了
visited_
.
insert
(
temp
);
//add 2015.01.14
temp
=
temp
->
right_
;
}
else
if
(
temp
->
data_
>
ptr_
->
data_
){
...
...
@@ -23,37 +25,25 @@ namespace TinySTL{
bst_iter
<
T
>&
bst_iter
<
T
>::
operator
++
(){
visited_
.
insert
(
ptr_
);
//此node被访问
if
(
ptr_
->
right_
){
//此node还有右子树
rvisited_
.
insert
(
ptr_
);
//
rvisited_.insert(ptr_);
parent_
.
push
(
ptr_
);
ptr_
=
ptr_
->
right_
;
while
(
ptr_
&&
ptr_
->
left_
){
parent_
.
push
(
ptr_
);
ptr_
=
ptr_
->
left_
;
}
}
else
{
//node无右子树则只能向父节点路径移动
}
else
{
//node无右子树则只能向父节点路径移动
ptr_
=
0
;
//add 2015.01.14
while
(
!
parent_
.
empty
()){
ptr_
=
parent_
.
top
();
parent_
.
pop
();
if
(
visited_
.
count
(
ptr_
)
==
0
){
//父节点尚未访问
if
(
visited_
.
count
(
ptr_
)
==
0
){
//父节点尚未访问
,此时ptr_指向此节点
visited_
.
insert
(
ptr_
);
break
;
}
else
if
(
rvisited_
.
count
(
ptr_
)
==
0
){
//父节点的右子树尚未被访问
rvisited_
.
insert
(
ptr_
);
if
(
ptr_
->
right_
){
parent_
.
push
(
ptr_
);
ptr_
=
ptr_
->
right_
;
while
(
ptr_
&&
ptr_
->
left_
){
parent_
.
push
(
ptr_
);
ptr_
=
ptr_
->
left_
;
}
}
}
ptr_
=
0
;
}
}
ptr_
=
0
;
//设为哨兵
}
//end of while
}
//end of if
return
*
this
;
}
template
<
class
T
>
...
...
TinySTL/Test/BinarySearchTreeTest.cpp
浏览文件 @
590652f0
...
...
@@ -36,7 +36,7 @@ namespace TinySTL{
std
::
vector
<
int
>
v
;
std
::
random_device
rd
;
for
(
auto
i
=
0
;
i
!=
10
;
++
i
){
for
(
auto
i
=
0
;
i
!=
10
0
;
++
i
){
auto
r
=
rd
()
%
65536
;
bst
.
insert
(
r
);
v
.
push_back
(
r
);
...
...
TinySTL/Test/BinarySearchTreeTest.h
浏览文件 @
590652f0
...
...
@@ -16,6 +16,10 @@ namespace TinySTL{
template
<
class
T
>
using
tsBst
=
TinySTL
::
binary_search_tree
<
T
>
;
void
testCase1
();
void
testCase2
();
void
testCase3
();
void
testCase4
();
void
testAllCases
();
}
...
...
TinySTL/TinySTL.vcxproj
浏览文件 @
590652f0
...
...
@@ -79,13 +79,16 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile
Include=
"Alloc.cpp"
/>
<ClCompile
Include=
"Detail\Alloc.cpp"
/>
<ClCompile
Include=
"Detail\String.cpp"
/>
<ClCompile
Include=
"main.cpp"
/>
<ClCompile
Include=
"Profiler\Profiler.cpp"
/>
<ClCompile
Include=
"String.cpp"
/>
<ClCompile
Include=
"Test\AlgorithmTest.cpp"
/>
<ClCompile
Include=
"Test\BinarySearchTreeTest.cpp"
/>
<ClCompile
Include=
"Test\BitmapTest.cpp"
/>
<ClCompile
Include=
"Test\CircularBufferTest.cpp"
/>
<ClCompile
Include=
"Test\DequeTest.cpp"
/>
<ClCompile
Include=
"Test\ListTest.cpp"
/>
<ClCompile
Include=
"Test\PairTest.cpp"
/>
<ClCompile
Include=
"Test\PriorityQueueTest.cpp"
/>
<ClCompile
Include=
"Test\QueueTest.cpp"
/>
...
...
@@ -104,6 +107,12 @@
<ClInclude
Include=
"CircularBuffer.h"
/>
<ClInclude
Include=
"Construct.h"
/>
<ClInclude
Include=
"Deque.h"
/>
<ClInclude
Include=
"Detail\BinarySearchTree.impl.h"
/>
<ClInclude
Include=
"Detail\Bitmap.impl.h"
/>
<ClInclude
Include=
"Detail\CircularBuffer.impl.h"
/>
<ClInclude
Include=
"Detail\Deque.impl.h"
/>
<ClInclude
Include=
"Detail\List.impl.h"
/>
<ClInclude
Include=
"Detail\Vector.impl.h"
/>
<ClInclude
Include=
"Functional.h"
/>
<ClInclude
Include=
"Iterator.h"
/>
<ClInclude
Include=
"List.h"
/>
...
...
@@ -114,8 +123,11 @@
<ClInclude
Include=
"String.h"
/>
<ClInclude
Include=
"SuffixArray.h"
/>
<ClInclude
Include=
"Test\AlgorithmTest.h"
/>
<ClInclude
Include=
"Test\BinarySearchTreeTest.h"
/>
<ClInclude
Include=
"Test\BitmapTest.h"
/>
<ClInclude
Include=
"Test\CircularBufferTest.h"
/>
<ClInclude
Include=
"Test\DequeTest.h"
/>
<ClInclude
Include=
"Test\ListTest.h"
/>
<ClInclude
Include=
"Test\PairTest.h"
/>
<ClInclude
Include=
"Test\PriorityQueueTest.h"
/>
<ClInclude
Include=
"Test\QueueTest.h"
/>
...
...
TinySTL/TinySTL.vcxproj.filters
浏览文件 @
590652f0
...
...
@@ -22,6 +22,9 @@
<Filter
Include=
"ScreenShots"
>
<UniqueIdentifier>
{f20d9032-1c1d-424a-a8aa-f39c87789d3b}
</UniqueIdentifier>
</Filter>
<Filter
Include=
"Detail"
>
<UniqueIdentifier>
{7dd5c5f0-33b6-44c6-b2b9-d4c0ec1d4c13}
</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile
Include=
"Profiler\Profiler.cpp"
>
...
...
@@ -60,11 +63,20 @@
<ClCompile
Include=
"Test\CircularBufferTest.cpp"
>
<Filter>
Test
</Filter>
</ClCompile>
<ClCompile
Include=
"
Alloc
.cpp"
>
<Filter>
头文件
</Filter>
<ClCompile
Include=
"
Test\DequeTest
.cpp"
>
<Filter>
Test
</Filter>
</ClCompile>
<ClCompile
Include=
"String.cpp"
>
<Filter>
头文件
</Filter>
<ClCompile
Include=
"Test\ListTest.cpp"
>
<Filter>
Test
</Filter>
</ClCompile>
<ClCompile
Include=
"Detail\Alloc.cpp"
>
<Filter>
Detail
</Filter>
</ClCompile>
<ClCompile
Include=
"Detail\String.cpp"
>
<Filter>
Detail
</Filter>
</ClCompile>
<ClCompile
Include=
"Test\BinarySearchTreeTest.cpp"
>
<Filter>
Test
</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
...
...
@@ -167,6 +179,33 @@
<ClInclude
Include=
"Test\CircularBufferTest.h"
>
<Filter>
Test
</Filter>
</ClInclude>
<ClInclude
Include=
"Test\DequeTest.h"
>
<Filter>
Test
</Filter>
</ClInclude>
<ClInclude
Include=
"Test\ListTest.h"
>
<Filter>
Test
</Filter>
</ClInclude>
<ClInclude
Include=
"Detail\Deque.impl.h"
>
<Filter>
Detail
</Filter>
</ClInclude>
<ClInclude
Include=
"Detail\Bitmap.impl.h"
>
<Filter>
Detail
</Filter>
</ClInclude>
<ClInclude
Include=
"Detail\CircularBuffer.impl.h"
>
<Filter>
Detail
</Filter>
</ClInclude>
<ClInclude
Include=
"Detail\Vector.impl.h"
>
<Filter>
Detail
</Filter>
</ClInclude>
<ClInclude
Include=
"Detail\List.impl.h"
>
<Filter>
Detail
</Filter>
</ClInclude>
<ClInclude
Include=
"Test\BinarySearchTreeTest.h"
>
<Filter>
Test
</Filter>
</ClInclude>
<ClInclude
Include=
"Detail\BinarySearchTree.impl.h"
>
<Filter>
Detail
</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None
Include=
"..\README.md"
/>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录