思想:找規律結合二分思想,結果集的長度應該為該樹的層數m,而每層的長度(寬度)=樹的深度=2^m - 1
然後每次把根節點插入到該層的中間位置mid=(start+end)/2上,然後左子樹對應的插入區間為[start,mid-1],右子樹的插入區間為[mid+1,end]然後同樣也是將左右子樹的根節點插入到它們區間的mid位置上,其他位置預設為空串
時間複雜度o(h * 2^h),h為樹的高度,arrays.fill() 它的時間複雜度為o(2^h)
空間複雜度o(h * 2^h) , 每層有2^h-1個數
class solution
private void helper(stringres,int idx,int start,int end,treenode root)
int mid = (start+end)/2;
res[idx][mid] = string.valueof(root.val);
helper(res,idx+1,start,mid-1,root.left);
helper(res,idx+1,mid+1,end,root.right);
}public list> printtree(treenode root)
helper(str,0,0,n-1,root);
for(string s:str)
return res;
}}
二叉樹輸出
樹的凹入表示法主要用於樹的螢幕或列印輸出,其表示的基本思想是兄弟間等長,乙個結點的長度要不小於其子結點的長度。二叉樹也可以這樣表示,假設葉結點的長度為1,乙個非葉結點的長度等於它左右子樹的長度之和。一棵二叉樹的乙個結點用乙個字母表示 無重複 輸出時從根結點開始 每行輸出若干個結點字元 相同字元的個數...
判別二叉樹T是否為完全二叉樹
判別二叉樹t是否為完全二叉樹 定義 深度為k且含有n個結點的二叉樹,如果其每個結點都與深度為k的滿二叉樹中的編號從1到n的結點一一對應,則成為完全二叉樹。判斷條件 1.左 右子樹都是完全二叉樹 2.左子樹的高度和右子樹一樣或大1 3.若左子樹比右子樹高度大1,則右子樹必須是滿的 節點數等於2 高度 ...
二叉樹的輸出
標頭檔案 函式的宣告 include include include define maxsize 100 typedef char elemtype typedef struct node bittree,bitnode void createbittree2 bittree t,char str...