SHOGUN
3.2.1
首页
相关页面
模块
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
宏定义
组
页
src
shogun
multiclass
tree
BinaryTreeMachineNode.h
浏览该文件的文档.
1
/*
2
* Copyright (c) The Shogun Machine Learning Toolbox
3
* Written (w) 2014 Parijat Mazumdar
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions are met:
8
*
9
* 1. Redistributions of source code must retain the above copyright notice, this
10
* list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright notice,
12
* this list of conditions and the following disclaimer in the documentation
13
* and/or other materials provided with the distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
19
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*
26
* The views and conclusions contained in the software and documentation are those
27
* of the authors and should not be interpreted as representing official policies,
28
* either expressed or implied, of the Shogun Development Team.
29
*/
30
31
#ifndef BINARYTREEMACHINENODE_H__
32
#define BINARYTREEMACHINENODE_H__
33
34
#include <
shogun/base/SGObject.h
>
35
#include <
shogun/base/Parameter.h
>
36
#include <
shogun/multiclass/tree/TreeMachineNode.h
>
37
38
namespace
shogun
39
{
40
47
template
<
typename
T>
48
class
CBinaryTreeMachineNode
49
:
public
CTreeMachineNode
<T>
50
{
51
public
:
53
CBinaryTreeMachineNode
() :
CTreeMachineNode
<T>()
54
{
55
}
56
57
59
virtual
~CBinaryTreeMachineNode
()
60
{
61
}
62
66
virtual
const
char
*
get_name
()
const
{
return
"BinaryTreeMachineNode"
; }
67
72
void
left
(
CBinaryTreeMachineNode
* l)
73
{
74
if
(this->
m_children
->
get_num_elements
()==0)
75
{
76
this->
m_children
->
push_back
(l);
77
l->
parent
(
this
);
78
}
79
else
80
{
81
this->
m_children
->
set_element
(l,0);
82
l->
parent
(
this
);
83
}
84
}
85
90
CBinaryTreeMachineNode
*
left
()
91
{
92
if
(this->
m_children
->
get_num_elements
())
93
return
(
CBinaryTreeMachineNode
*) this->
m_children
->
get_element
(0);
94
95
return
NULL;
96
}
97
102
void
right
(
CBinaryTreeMachineNode
* r)
103
{
104
if
(this->
m_children
->
get_num_elements
()==0)
105
{
106
this->
m_children
->
push_back
(NULL);
107
this->
m_children
->
push_back
(r);
108
r->
parent
(
this
);
109
}
110
else
if
(this->
m_children
->
get_num_elements
()==1)
111
{
112
this->
m_children
->
push_back
(r);
113
r->
parent
(
this
);
114
}
115
else
116
{
117
this->
m_children
->
set_element
(r,1);
118
r->
parent
(
this
);
119
}
120
}
121
126
CBinaryTreeMachineNode
*
right
()
127
{
128
if
(this->
m_children
->
get_num_elements
()==2)
129
return
(
CBinaryTreeMachineNode
*) this->
m_children
->
get_element
(1);
130
131
return
NULL;
132
}
133
134
};
135
136
}
/* namespace shogun */
137
138
#endif
/* BINARYTREEMACHINENODE_H__ */
139
SHOGUN
机器学习工具包 - 项目文档