二叉樹的重構 控制台版本

2021-09-28 18:30:02 字數 937 閱讀 8014

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 中序遍歷結果的特點 如果當前節點是當前樹的根節點,那麼該節點左邊...