問題分析:遞迴遍歷
題目提供的節點:
struct treenode
/* treenode* left=null;
treenode* right=null;
int val;
*/};
解法【遞迴遍歷】當遍歷到葉子結點的時候,會自動返回+1操作,累計樹的深度。
class solution*/}
};
c++中不能將void *型別的指標隱式轉換成其他指標型別。
null是0 在c++11中引入nullptr是空指標void,nullptr並非整型類別,甚至也不是指標型別,但是能轉換成任意指標型別。
a.b a為物件或者結構體
a->b a為指標,->為成員提取,a->b是提取a中的成員b,a只能是指向類、結構、聯合的指標;
::是作用域運算子,a::b表示作用域a中的名稱b,a可以是命名空間,類,結構
1)類作用域操作符。「::」指明了成員函式所屬的類。
2)表示引用成員函式及變數,作用域成員運算子。例如:system::math::sqrt() 相當於system.math.sqrt()
:表示繼承,另一種是建構函式
class client:public: allocatable //表示類client繼承自allocatable
其實冒號後的內容是初始化成員列表,一般有三種情況:
1、對含有物件成員的物件進行初始化,例如,
類line有兩個私有物件成員startpoint、endpoint,line的建構函式寫成:
line(int sx,int sy,int ex,int ey):startpoint(sx,sy),endpoint(ex,ey)
初始化時按照類定義中物件成員的順序分別呼叫各自物件的建構函式,再執行自己的建構函式
2、對於不含物件成員的物件,初始化時也可以套用上面的格式,例如,
類rectangle有兩個資料成員length、width,其建構函式寫成:
rectangle():length(1),width(2){}
rectangle(int x,int y):length(x),width(y){}
3、對父類進行初始化,例如,
cdlgcalcdlg的父類是mfc類cdialog,其建構函式寫為:
cdlgcalcdlg(cwnd* pparent ): cdialog(cdlgcalcdlg::idd, pparent)
其中idd是乙個列舉元素,標誌對話方塊模板的id
使用初始化成員列表對物件進行初始化,有時是必須的,有時是出於提高效率的考慮
#includeusing namespace std;
int arr[7] = ;
struct binarytree
;binarytree *proot = null;
void inserttree(binarytree *root,int data)
else
}else
else
inserttree(root->pright, data); }}
void createtree(binarytree **root, int *array, int length)
else
inserttree(*root, array[i]); }}
void preorder(binarytree *tree)
}int treedepth(binarytree *root)
int main()
程式設計練習之一顆二叉樹包含另一顆二叉樹
劍指offer上的一道程式設計練習,如何確定二叉樹a包含一棵相對小一點的二叉樹b?思路 用兩個函式實現,第乙個首先判斷根結點是否相等,第二個函式繼續判斷子結構是否相等 函式一 第一步,首先從根結點入手,判斷proota的值是否與prootb的根結點的值是否相等。若相等,則在比較a樹的子結構是否包含b...
求二叉樹的高度和銷毀一顆二叉樹 題集九
求二叉樹的高度和銷毀一顆二叉樹 題集九 今天來分享一下,求二叉樹的高度和銷毀一顆二叉樹以及如何實現鍊錶翻轉 鍊錶逆置的公升級變型 求二叉樹的高度和銷毀一顆二叉樹 destroy node root 的源 和執行示例。源 如下 includeusing namespace std struct tre...
求任意一顆二叉樹的繁茂度
在 資料結構 嚴蔚敏版上的習題看到這個問題。繁茂度的定義 各層節點數的最大值與樹的高度的乘積 樹的深度好求,遞迴呼叫就行了。關鍵在於如何求出各層的最大節點樹?下面是我的一種實現方法 bitree.h include include include include using namespace st...