//lt102
/*二叉樹的層次遍歷
給定乙個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。
例如:給定二叉樹: [3,9,20,null,null,15,7],
3 / \
9 20
/ \
15 7
返回其層次遍歷結果:
[ [3],
[9,20],
[15,7]
]思路1:廣度優先搜尋(佇列)o(n)/o(n)
思路2:廣度優先搜尋(加層數標誌)
思路3:dfs(加標記level)
*/class solution ;
queueq;
int size = 0;
treenode *cur = root;
vector> res;
q.push(cur);
while (!q.empty())
}if (temp.size() != 0) res.push_back(temp); //去掉空陣列
} return res;
}};//執行用時:0 ms, 在所有 c++ 提交中擊敗了100.00%的使用者
//記憶體消耗 :15 mb, 在所有 c++ 提交中擊敗了9.57%的使用者
class solution ;
queueq;
int size = 0; //記錄佇列中已有的節點數(上一層)
treenode *cur = root;
vector> res;
int level = 0;
q.push(cur);
while (!q.empty()) );
while (size > 0)
++level;
} return res;
}};class solution ;將當前節點新增到對應層
//再遞迴呼叫非空的孩子節點
vector> res;
vector> levelorder(treenode* root) ;
helper(root, 0);
return res;
} void helper(treenode *root, int level) );
res[level].push_back(root->val);
if (root->left) helper(root->left, level + 1);
if (root->right) helper(root->right, level + 1);
}};
層次遍歷二叉樹
問題 假定根節點位於第0層 1.層次遍歷二叉樹 每層換行分開 2.層次遍歷二叉樹指定的某層 本文 例如 上圖中1.123 4567 82.第三層 78可以看出得出第二問的解,第一問迎刃而解了,所以從問題二下手 1.層次遍歷二叉樹指定的某層 可以得出這樣的乙個結論 遍歷二叉樹的第k層,相當於遍歷二叉樹...
二叉樹層次遍歷
題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路 二叉樹的層次遍歷,利用棧的先進後出的特性。struct treenode class solution res.push back temp while m.empty m中是從左往右入棧,這裡把它反過來,s中是從右往左...
二叉樹層次遍歷
層次遍歷二叉樹,每一次儲存在list中,結果按從葉子層到根,從左到右的順序儲存 一 class solution return lists 相當於在先序的基礎上改進,level是每個node所在的層次。如果lists大小和level相等,說明開始新一層的儲存。如果不等,則直接把值存入相應層次的lis...