3.22 從上往下列印二叉樹
阿新 • • 發佈:2018-12-25
從上往下打印出二叉樹的每個節點,同層節點從左至右列印。
思路: 利用佇列的特性 先進先出 將樹的節點按照左右的順序放入佇列中, 並按個取出.
struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; // 樹節點 // 按層列印 std::vector<int> PrintFromTopToBottom(TreeNode* root) { std::vector<int> printVal; do { if (root == NULL) { break; } std::queue<TreeNode*> queue; queue.push(root); while (!queue.empty()) { TreeNode* node = queue.front(); if (node != NULL) { printVal.push_back(node->val); } if (node->left != NULL) { queue.push(node->left); } if (node->right != NULL) { queue.push(node->right); } queue.pop(); } } while (0); return printVal; }