연산만 포함하는 이진 산술 표현식을 설정하고 연결된 목록 이진 트리에 저장하고 표현식을 계산하는 알고리즘을 작성합니다.

후속 순회 아이디어를 기반으로 왼쪽 및 오른쪽 하위 트리의 결과를 재귀적으로 계산하고 최종적으로 루트 노드의 연산자에 따라 결과를 계산합니다.

typedef struct BiTNode{
    ElemType data;
    struct BiTNode *lchild,*rchild;
}*BiTree;
//对二叉链表树中的结点计算
ElemType Calculate(BiTree T){    
	BiTNode *p = T;    //创建指针指向根结点    
	ElemType val_l, val_r;        
	if(T){
		val_l = Calculate(p->lchild);    //递归计算左、右子树
		val_r = Calculate(p->rchild);
		switch(p->optr){        //根据根节点的字符将左右子结果计算为当前这一层子树的结果
			case'+':
				value = val_l + val_r;
				break;
			case'-':
				value = val_l - val_r;
				break;
			case'*':
				value = val_l * val_r;
				break;
			case'/':
				value = val_l / val_r;
				break;
			default:
				break;
		}
	}
	return value;
}

Supongo que te gusta

Origin blog.csdn.net/qq_37504771/article/details/111999774
Recomendado
Clasificación