劍指offer 演算法 (舉例讓抽象具體化)

2021-07-04 16:46:42 字數 1221 閱讀 9461

題目描述

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。

解析:從上往下遍歷 root結點 左結點 右結點 每遍歷乙個依次存入佇列 由佇列的先進先出 依次便可逐層存結點入陣列中

/*

struct treenode

};*/

class solution

return array;

}};

題目描述

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。

解析:二叉查詢樹(binary search tree),(又:二叉搜尋樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。

class solution 

bool tree( vectorsequence , int start , int end )

for( j = i ; j < end ; j ++ )//判斷是否符合右子樹

bool leftt = tree( sequence , start , i - 1 );

bool rightt = tree( sequence , i , end - 1 );

return leftt && rightt ;

}};

題目描述

輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。

/*

struct treenode

};*/

class solution

void pretree(treenode* root,int expectnumber,vector> &array,vectorv,int sum)

pretree( root->left, expectnumber, array , v , sum );

pretree( root->right, expectnumber, array , v , sum );

}};

劍指offer 演算法 (舉例讓抽象具體化)

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。在該棧中,呼叫min,push,pop的時間複雜度都是o 1 解析 首先是乙個棧,這個棧已經是最常見的那種,我們需要改造它使它能夠在o 1 時間內返回最小元素,剛開始的思路是往棧裡面新增乙個元素放在stack的頂部,表示...

劍指offer 舉例讓抽象具體化

問題描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的 min 函式 時間複雜度應為 o 1 注意 保證測試中不會當棧為空的時候,對棧呼叫 pop 或者 min 或者 top 方法。const datastack 棧 const minstack 儲存棧中最小的元素 functi...

演算法 劍指offer

思路 若百位上數字為0,百位上可能出現1的次數由更高位決定 若百位上數字為1,百位上可能出現1的次數不僅受更高位影響還受低位影響 若百位上數字大於1,則百位上出現1的情況僅由更高位決定。舉例 個位1出現的次數 round 1 1 每次迴圈1出現一次,0 9迴圈了53次,第54次迴圈為0 4 十位1出...