控制台的二叉樹樹形顯示

2021-06-22 15:16:02 字數 1017 閱讀 7879

在文章《求二叉樹的高度以及二叉樹的樹形顯示》中,顯示的結點的下一行的左右沒有標示左右子樹的左右向斜線,下面參考了零一篇文章新增了左右向斜線的顯示。顯示的**如下:

void printtree(bintree t,int root_x,int root_y,int step,char **marker)

}

遞迴方式建立上文的二維矩陣m(文章《求二叉樹的高度以及二叉樹的樹形顯示》中showtreemarker(

int**m,

introw,

intcol,

char

*s)函式的引數m,即佔位標識矩陣):

void makemat(bintree t,int root_x,int root_y,int step,int **m)

}

呼叫方式:

makemat(t,len>>1,0,len+1>>2,m);

在二維矩陣marker傳參前,對marker進行初始化為空白字元:

int h = height(t);

int len = (1<>1,0,(len+1)>>2,marker);

for(int i=0;i<2*h-1;i++)

{ for(int j=0;j

a

/ \

b c

/ \ /

d e f

a               

/ \

b c

\ / \

d e f

/ \

g h

/

i

額,感覺還是用matlab繪製的圖好點。

ref:

1,

控制台輸出二叉樹

為了更好地觀察二叉樹,這裡使用0來填充空結點 maxlevel表示樹的深度,即樹的最大層次 下面一段 執行後 通過blankbetween level 得到第level層樹的兩個結點之間應該列印多少個空格 通過blankfront level 得到本層第乙個結點前應該列印多少個空格 int blan...

二叉樹的重構 控制台版本

2.不會不使用while進行字串的輸入 直接cin str即可。3.前驅和後驅再不斷地自加自減中弄混 使用j i 1和k i 1來表示即可。4.對於ab ba這種右子為null的樹結構的重構發生失敗 在src 的上下分別進行src是否 0 的判斷。void binarytree myinput st...

束縛二叉樹 樹形dp

乙個子樹內的前序遍歷序是連續的,於是可以設 f i j f i,j f i,j 表示以 i ii 為根的子樹,子樹末節點編號為 j jj 時的方案數,狀 態轉 移 f i,j k ijf i,k f k 1,j 狀態轉移 f i,j sum limits f i,k times f k 1,j 狀態...