数据结构二叉树遍历 数据结构 6.7 建表达式的二叉树算法演示

数据结构 6.7 建表达式的二叉树算法演示
希赛教育计算机专业考研专业课辅导招生
希赛教育计算机专业考研专业课辅导视频
希赛教育计算机考研专业课在线测试系统
BiTree CrtExptree( char* exp ) { // 建立由合法的表达式字符串 exp 确定的只含二元运算符的 // 非空表达式树 返回其存储结构二叉链表的根结点指针 InitStack(S); Push(S # ); // S为暂存运算符的栈 InitStack(PTRS); // PTRS为暂存子树根指针的栈 p=exp; ch=*p; while(!(GetTop(S)== # && ch== # )) { if (!IN(ch OP)) CrtNode( t ch ); // 建叶子结点 else { switch (ch) { case ( : Push(S ch); break; case ) : { Pop(S c); while (c!= ( ) { CrtSubtree(t c); Pop(S c);} // 建子树直至运算符的栈顶为 ( break; } defult:{ while (!GetTop(S c) && (precede(c ch))) { CrtSubtree(t c); Pop(S c);} // 建子树直至运算符栈顶运算符的优先数低 if ( ch != # ) Push( S ch); break; } // defult } // switch } // else if (ch != # ) { p++; ch = *p; } } // while Pop(S c); Pop( PTRS t ); DestroyStack(S); DestroyStack(PTRS); return t; } // CrtExptree
算法的执行过程如动画所示
lishixinzhi/Article/program/sjjg/201311/22595