2.不會不使用while進行字串的輸入
直接cin>>str即可。
3.前驅和後驅再不斷地自加自減中弄混
使用j=i+1和k=i-1來表示即可。
4.對於ab&ba這種右子為null的樹結構的重構發生失敗
在src++的上下分別進行src是否『\0』的判斷。
void binarytree::myinput()
str[i].ch= temp[i];}}
void binarytree::mycreatebintree(btnode*& subtree)
else if (str[++i].ch == 『\0』)
break;}}
mycreatebintree(subtree->leftchild);
mycreatebintree(subtree->rightchild);
}if (*src == 『\0』)return;//防止提前出字串
src++;
if (*src == 『\0』)return;//同上
item = *src;
subtree = new btnode(item);
for (int i = 0; str[i].ch != 『\0』; i++)
mycreatebintree(subtree->rightchild);
break;
}if (str[k].ch == 『\0』)
mycreatebintree(subtree->leftchild);
break;
}if (str[j].tag1&&str[k].tag0)
if (str[j].tag0 && str[k].tag==1)
if (str[j].tag == 1 && str[k].tag == 1)
else }}
}}
控制台輸出二叉樹
為了更好地觀察二叉樹,這裡使用0來填充空結點 maxlevel表示樹的深度,即樹的最大層次 下面一段 執行後 通過blankbetween level 得到第level層樹的兩個結點之間應該列印多少個空格 通過blankfront level 得到本層第乙個結點前應該列印多少個空格 int blan...
控制台的二叉樹樹形顯示
在文章 求二叉樹的高度以及二叉樹的樹形顯示 中,顯示的結點的下一行的左右沒有標示左右子樹的左右向斜線,下面參考了零一篇文章新增了左右向斜線的顯示。顯示的 如下 void printtree bintree t,int root x,int root y,int step,char marker 遞迴...
二叉樹重構
問題描述 根據前序遍歷結果和中序遍歷結果,重構二叉樹。1 前序遍歷結果的特點 假設當前的遍歷結果是完整的樹節點集合。那麼第乙個節點就是該樹的根節點,並且其後面的節點集合中,前半部分是其左子樹的節點集合,後半部分是其右子樹的節點集合。2 中序遍歷結果的特點 如果當前節點是當前樹的根節點,那麼該節點左邊...