二叉树节点结构
struct TreeNode { int val; struct TreeNode* left, * right; TreeNode() { val = 0; left = right = nullptr; } TreeNode(int x) :val(x) { left = right = nullptr; } TreeNode(int x, struct TreeNode* leftnode, struct TreeNode* rightnode) :val(x), left(leftnode), right(rightnode) { } };
层序遍历
void LevelOrderVisit(TreeNode* root) { if ( root == nullptr ) { // 空树 return ; } vectorvec_0 = { root }; // 当前层节点 while (1) { vector vec_1; // 下一层节点 for (auto i : vec_0) { if (i->left != nullptr) vec_1.push_back(i->left); if (i->right != nullptr) { vec_1.push_back(i->right); } cout << i->val << ' '; // 打印节点值 } cout << endl; if (vec_1.size() == 0) { // 下一层节点为空时跳出 break; } vec_0 = vec_1; // 下一层迭代 } } vector > LevelOrderVisit(TreeNode* root) { vector > nodes; // 存储每一层节点值,并返回 vector vec_0 = { root }; // 当前层节点 while (1) { vector vec_1; // 下一层节点 vector cur; // 当前节点值 for (auto i : vec_0) { if (i->left != nullptr) vec_1.push_back(i->left); if (i->right != nullptr) { vec_1.push_back(i->right); } cur.push_back(i->val); } nodes.push_back(cur); if (vec_1.size() == 0) { // 下一层节点为空时跳出 break; } vec_0 = vec_1; // 下一层迭代 } return nodes; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)