LintCode 69 二叉樹的層次遍歷

2021-07-31 13:40:44 字數 824 閱讀 7265

給出一棵二叉樹,返回其節點值的層次遍歷(逐層從左往右訪問)

給一棵二叉樹  :

3 / \

9 20

/ \

15 7

返回他的分層遍歷結果:

[[3],

[9,20],

[15,7]

]

挑戰1:只使用乙個佇列去實現它

挑戰2:用dfs演算法來做

用i來記錄當前層遍歷了幾個,n來記錄當前層有幾個,j來記錄一共遍歷了幾個有效結點,size表示結點數。

用dfs的話,二個引數乙個是當前結點,乙個是當前層數。

int getsize(treenode *root) 

return getsize(root->left) + getsize(root->right);

}vector

> levelorder(treenode *root)

int size = getsize(root) - 1;

queue

que;

que.push(root);

vector

*v = new

vector

();int n = 1;

int i = 0;

int j = 0;

while (!que.empty() && j < size)

if (i >= n)

}if (now) else

}if (!v->empty())

return vec;

}

LintCode 69 二叉樹的層序遍歷

給出一棵二叉樹,返回其節點值的層次遍歷 逐層從左往右訪問 樣例 1 輸入 輸出 1 2,3 解釋 1 2 3 它將被序列化為 層次遍歷樣例 2 輸入 輸出 1 2 3 解釋 1 2 3 它將被序列化為 層次遍歷public list levelorder treenode root queueque...

二叉樹專題 lintcode二叉樹的層序遍歷

層序遍歷算是遍歷方式中,比較容易掌握的,實質就是寬度優先遍歷,bfs的基本 塊如下 void bfs 放到二叉樹的遍歷中來看,首先根節點入隊,根出隊,訪問根節點,再入隊左孩子,入隊右孩子 這樣再出隊時,就是訪問的第二層的左側.以此類推 我們來看看題目考察的方式 由以上的分析,容易想到先取到這一層的元...

LintCode 等價二叉樹

題目描述 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。樣例 1 1 2 2 and 2 2 4 4 就是兩棵等價的二叉樹。1 1 2 3 and 2 3 4 4就不是等價的。做題思路 本題給出的bool型別的函式來判斷二叉樹是否等價...