- 满二叉树中,已知先序序列,求后序
一般的二叉树,仅有先序或者后序是无法唯一确定一棵二叉树的,但对于满二叉树,任意一个结点都有结点数相同的左右子树,并且先序的第一个节点为后序的最后一个结点
int pre[MAX],post[MAX];
void preToPost(int l1,int h1,int l2,int h2)
{
int half;
if(l1<=h1){
post[h2]=pre[l1];
half=(h1-l1)/2;
preToPost(l1+1,l1+half,l2,l2+half-1);
preToPost(l1+half+1,h1,l2+half,h2-1);
}
}
- 二叉树的带权路径长度
二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和,也就是每个叶结点的深度与权值之积的总和
int getWPL(TreeNode *root,int h)
{
if(!root)return 0;
if(!root->left&&!root->right)
return root->val*h;
return getWPL(root->left,h+1)+getWPL(root->right,h+1);
}
int pathSum(TreeNode* root) {
return getWPL(root,0);
}