本文整理汇总了C++中Tree::AddNode方法的典型用法代码示例。如果您正苦于以下问题:C++ Tree::AddNode方法的具体用法?C++ Tree::AddNode怎么用?C++ Tree::AddNode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tree
的用法示例。
在下文中一共展示了Tree::AddNode方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: tree_traversal_main
//int main( void )
int tree_traversal_main()
{
Tree* tree = new Tree();
tree->AddNode( 30 );
tree->AddNode( 10 );
tree->AddNode( 20 );
tree->AddNode( 40 );
tree->AddNode( 50 );
cout << "In order traversal" << endl;
tree->InOrder( tree->Root( ) );
cout << endl << endl;
cout << "Pre order traversal" << endl;
tree->PreOrder( tree->Root( ) );
cout << endl << endl;
cout << "Pre order traversal - no recursion" << endl;
tree->PreOrder_NoRecursion( tree->Root( ) );
cout << endl << endl;
cout << "Post order traversal" << endl;
tree->PostOrder( tree->Root( ) );
cout << endl << endl;
cout << "Tree Height : " << tree->Height( tree->Root() ) << endl;
cout << endl << endl;
delete tree;
return 0;
}
示例2: ParseSgfBranch
void ParseSgfBranch(
const std::string &sgf, unsigned int &index,
int parentid, Tree<std::string> &out)
{
// find the first node (i.e. ';')
bool intag = false;
bool innode = false;
unsigned int nodestart = index;
while (index < sgf.size())
{
if (!intag && sgf[index] == '[') {
intag = true;
} else if (intag && sgf[index] == ']' && sgf[index-1] != '\\') {
intag = false;
} else if (!intag && sgf[index] == ';') {
// current node ends, if any
if (innode) {
out.AddNode(sgf.substr(nodestart, index-nodestart), parentid);
parentid = out.size() - 1;
}
// new node starts
nodestart = index + 1;
innode = true;
} else if (!intag && sgf[index] == ')') {
// branch closed
// hence, current node ends
if (innode) {
out.AddNode(sgf.substr(nodestart, index-nodestart), parentid);
}
return;
} else if (!intag && sgf[index] == '(') {
// new branch starts
// hence, current node ends
if (innode) {
out.AddNode(sgf.substr(nodestart, index-nodestart), parentid);
parentid = out.size() - 1;
}
index++;
innode = false;
ParseSgfBranch(sgf, index, parentid, out);
}
index++;
}
}
示例3: main
std::string
int main( void )
{
Tree* tree = new Tree();
tree->AddNode( 30 );
tree->AddNode( 10 );
tree->AddNode( 20 );
tree->AddNode( 40 );
tree->AddNode( 50 );
cout << "In order traversal" << endl;
tree->InOrder( tree->Root( ) );
cout << endl << endl;
cout << "Pre order traversal" << endl;
tree->PreOrder( tree->Root( ) );
cout << endl << endl;
cout << "Pre order traversal - no recursion" << endl;
tree->PreOrder_NoRecursion( tree->Root( ) );
cout << endl << endl;
cout << "Post order traversal" << endl;
tree->PostOrder( tree->Root( ) );
cout << endl << endl;
cout << "Tree Height : " << tree->Height( tree->Root() ) << endl;
cout << endl << endl;
cout << Round( 123.456, 2 ) << endl;
delete tree;
return 0;
}
示例4: MakeSgfBranchTree
Tree<std::string> MakeSgfBranchTree(const std::string &sgf)
{
// parse SGF string and returns a tree of SGF nodes
// As a special case, where there is no branch in the input,
// returns a tree with a single node
Tree<std::string> out;
unsigned int i0;
unsigned int opencount = 0;
// This loop finds the beginning of the first branch
// Usually, a SGF starts at the first letter, but
// this handles cases where SGF contains few spaces or
// junk information before the first parenthesis
for (unsigned i = 0; i < sgf.size(); i++)
{
if (sgf[i] == '(') {
i0 = i + 1;
opencount = 1;
break;
}
}
// Return an empty tree if no branch is found
if (opencount == 0) return out;
unsigned int myid = 0;
int parentid = -1;
int mystart = i0;
bool intag = false; // indicates we are now in tag element
bool inbranch = true; // indicates we are not in a branch, not in-between
for (unsigned int i = i0; i < sgf.size(); i++)
{
// finish if all node is closed
if (opencount == 0) break;
if (!intag && sgf[i] == '(') {
// new branch opens
// so, add the current node to the tree
if (inbranch) out.AddNode(sgf.substr(mystart, i - mystart), parentid);
opencount++;
parentid = myid;
myid = out.size();
mystart = i + 1;
inbranch = true;
} else if (!intag && sgf[i] == ')') {
// current branch closes
if (inbranch) out.AddNode(sgf.substr(mystart, i - mystart), parentid);
opencount--;
if (opencount == 0) break;
myid = parentid;
parentid = out.GetParent(myid);
inbranch = false;
} else if (!intag && sgf[i] == '[') {
// new tag starts
intag = true;
} else if (intag && sgf[i] == ']' && sgf[i-1] != '\\') {
intag = false;
}
}
return out;
}