Exemplo n.º 1
0
void BinaryTree<T>::sumDistances(const Node * subRoot, int len,int distance, queue<int> &q)const
{
	if(subRoot==NULL) return;
	distance=len;
	len++;

	q.push(distance);
	sumDistances(subRoot->left, len, distance, q);
	sumDistances(subRoot->right, len, distance, q);

}
Exemplo n.º 2
0
int BinaryTree<T>::sumDistances(const Node *sub_root, int distance) const
{
	// base case:
	if(sub_root == NULL)
	{
		return 0;
	}
	// recursive case:
	else
	{
		return sumDistances(sub_root->left, distance+1)+sumDistances(sub_root->right, distance+1)+distance;
 	}
}
Exemplo n.º 3
0
int BinaryTree<T>::sumDistances(const Node * subRoot, int & dist) const{
	int sum = 0;
	if (subRoot != NULL){
		sum += dist;
		dist ++;
		sum += sumDistances(subRoot->left, dist);
		sum += sumDistances(subRoot->right, dist);
		dist --;
		return sum;
	}
	else 
		return sum;
	
}
Exemplo n.º 4
0
int BinaryTree<T>::sumDistances(Node * subRoot, int dist) const
{
    if(subRoot == NULL)
	    return 0;
	if(subRoot->left == NULL && subRoot->right == NULL){
		dist++;
		return dist;
	}
	else{
		dist++;
		
		return dist + sumDistances(subRoot->left, dist) + sumDistances(subRoot->right,dist);	
		
	}	
}
Exemplo n.º 5
0
int BinaryTree<T>::sumDistances() const
{
	if (root == NULL)	
		return -1;
	int sum = 0;
	return sumDistances(root, sum);	
}
Exemplo n.º 6
0
int BinaryTree<T>::sumDistances(const Node * a,int d) const
{
 int left = 0;
 int right = 0;
 if(a->left==NULL && a->right==NULL)
 {
	return 0;
 }
 if(a->left!=NULL){
	// its d+1 as you count the path of the previous node as well
	left = 1 + sumDistances(a->left,d+1)+d;
 }
 if(a->right!=NULL)
	// ditto
	right = 1 + sumDistances(a->right,d+1) + d;
 

  return left+right; // returning the sum of the paths on both left and right nodes
}
Exemplo n.º 7
0
int BinaryTree<T>::sumDistances() const
{
    int sum=0;
	queue<int> Q;
	sumDistances(root, 0, 0, Q);
	while(!Q.empty())
	{
		int a=Q.front();
		sum=sum+a;
		Q.pop();
	}
	return sum;
}
Exemplo n.º 8
0
int BinaryTree<T>::sumDistances() const
{
    // your code here
	int d = 0;
    return sumDistances((*this).root, d);
}
Exemplo n.º 9
0
int BinaryTree<T>::sumDistances() const
{
	int d = 0;
	return sumDistances(root,d);
}
Exemplo n.º 10
0
int BinaryTree<T>::sumDistances() const
{
    
    return sumDistances(root, -1);
}