給出一棵二叉樹,返回其節點值的層次遍歷(逐層從左往右訪問)
給一棵二叉樹 :
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型別的函式來判斷二叉樹是否等價...