bin_tree<char>* tree_usage::generate_tree(char* preorder, char* inorder, int nLen) { bin_tree<char>* pRet = NULL; bin_tree_node<char>* pRoot = generate_node(preorder, inorder, nLen); if(pRoot) { pRet = new bin_tree<char>(pRoot); } return pRet; };
int main(int argc,char *argv[]) { int N=atoi(argv[1]),i; link_t head,x,temp,t,u; head=generate_node(0); head->next=NULL; srand((unsigned)time(NULL)); for(x=head,i=1; i<=N; i++) { temp=generate_node(rand()%100); insertNext(x,temp); x=temp; } print_list(head); head=free_nodes(head); print_list(head); return(0); }
bin_tree_node<char>* tree_usage::generate_node(char* preorder, char* inorder, int nLen) { bin_tree_node<char>* pNodeRet = NULL; if(!preorder || !inorder || nLen<=0) return pNodeRet; int nRootIndex = find(inorder, preorder[0], nLen); if(-1 == nRootIndex) //can't find this node, that means input got problem return pNodeRet; pNodeRet = new bin_tree_node<char>(preorder[0]); pNodeRet->set_lchild( generate_node( preorder+1, inorder, nRootIndex)); pNodeRet->set_rchild( generate_node( preorder+1+nRootIndex, inorder+1+nRootIndex, nLen-nRootIndex-1)); return pNodeRet; };
void NField::train(const std::vector<cv::Mat_<float> >& img, const cv::Mat_<uchar>& mask, const int max_depth) { std::vector<Pixel> pixels; for (int y = 5; y < img[0].rows - 5; ++y) { for (int x = 5; x < img[0].cols - 5; ++x) { Pixel p = {x, y, mask(y, x) == 0 ? 0 : 1}; pixels.push_back(p); } } Node root = generate_node(img, mask, pixels); this->tree_.push_back(root); rec_generate_node(img, mask, 0, max_depth-1, pixels); }