请教树转为二叉树的C++算法

来源:百度知道 编辑:UC知道 时间:2024/05/27 17:12:26
将a*(b+c/d)+e*h-g*f(s,t,x+y)改成逆波兰表示法时

我先建好了一棵树,结点为struct Node,根结点为root

我想把它转成二叉树,但是下面的算法似乎有问题,请教高手问题出在哪里?或者谁能给我一个更好的算法感激不尽!

struct BinTreeNode
{
BinTreeNode* lChild;
BinTreeNode* rChild;
char cData;
};

BinTreeNode* ToBinTree(Node* root)
{
if(root==NULL)
return NULL;
BinTreeNode* binRoot = new BinTreeNode();
binRoot->cData =root->cData;
binRoot->lChild= ToBinTree(root->pChildArr[0]);
BinTreeNode* brother=binRoot->lChild;
for(int i=1;i<root->nChild;i++)
{
brother->rChild=ToBinTree(root->pChildArr[i]);
brother=brother->rChild;
}
return binRoot;
}

不久是波兰编码么?我不了解你这样做想干嘛?加478057708,给你个代码看看,何必这么麻烦,直接利用堆栈写个二叉树不是更简单?

树通常就是以二叉链(二叉树)来存储的,“转化”的算法是默认的:左子树是第一个孩子,右子树是第一个兄弟。