如何做阿里巴巴的网站wordpress zidai模板
2026/1/10 11:39:52 网站建设 项目流程
如何做阿里巴巴的网站,wordpress zidai模板,react 和wordpress,重庆光龙网站建设二叉树的遍历文章目录二叉树的遍历深度优先遍历#xff08;DFS#xff09;二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历广度优先遍历#xff08;BFS#xff09;层序遍历二叉树是数据结构中的核心概念#xff0c;遍历二叉树是理解其结构和操作的基础深度优先遍历DFS二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历广度优先遍历BFS层序遍历二叉树是数据结构中的核心概念遍历二叉树是理解其结构和操作的基础深度优先遍历DFS二叉树的前序遍历顺序根节点 → 左子树 → 右子树简记为 “根左右”ABCDE二叉树的先序遍历序列为ABDEC递归实现// 递归实现class Solution{public:vectorintpreorderTraversal(TreeNode*root){vectorintresult;preorderHelper(root,result);returnresult;}private:voidpreorderHelper(TreeNode*node,vectorintresult){if(!node){return;}result.push_back(node-val);// 访问根节点preorderHelper(node-left,result);// 遍历左子树preorderHelper(node-right,result);// 遍历右子树}};迭代实现使用栈// 迭代实现使用栈vectorintpreorderTraversalIterative(TreeNode*root){vectorintresult;if(!root){returnresult;}stackTreeNode*stk;stk.push(root);while(!stk.empty()){TreeNode*nodestk.top();stk.pop();result.push_back(node-val);// 右子节点先入栈左子节点后入栈// 保证左子节点先被访问if(node-right){stk.push(node-right);}if(node-left){stk.push(node-left);}}returnresult;}迭代实现另一种方式// 迭代实现另一种方式vectorintpreorderTraversalIterative2(TreeNode*root){vectorintresult;stackTreeNode*stk;TreeNode*currroot;while(curr||!stk.empty()){// 遍历到最左侧节点while(curr){result.push_back(curr-val);// 访问当前节点stk.push(curr);currcurr-left;}// 回溯并转向右子树currstk.top();stk.pop();currcurr-right;}returnresult;}二叉树的中序遍历顺序左子树 → 根节点 → 右子树简记为 “左根右”ABCDE二叉树的中序遍历序列为DBEAC递归// 递归实现class Solution{public:vectorintinorderTraversal(TreeNode*root){vectorintresult;inorderHelper(root,result);returnresult;}private:voidinorderHelper(TreeNode*node,vectorintresult){if(!node)return;inorderHelper(node-left,result);// 遍历左子树result.push_back(node-val);// 访问根节点inorderHelper(node-right,result);// 遍历右子树}};迭代实现// 迭代实现vectorintinorderTraversalIterative(TreeNode*root){vectorintresult;stackTreeNode*stk;TreeNode*currroot;while(curr||!stk.empty()){// 遍历到最左侧节点while(curr){stk.push(curr);currcurr-left;}// 访问节点并转向右子树currstk.top();stk.pop();result.push_back(curr-val);currcurr-right;}returnresult;}迭代实现vectorintinorderTraversalUnified(TreeNode*root){vectorintresult;stackTreeNode*stk;if(root)stk.push(root);while(!stk.empty()){TreeNode*nodestk.top();stk.pop();if(node){// 右中左的顺序入栈if(node-right)stk.push(node-right);// 右stk.push(node);// 中stk.push(nullptr);// 标记节点if(node-left)stk.push(node-left);// 左}else{// 遇到标记访问节点nodestk.top();stk.pop();result.push_back(node-val);}}returnresult;}二叉树的后序遍历顺序左子树 → 右子树 → 根节点简记为 “左右根”ABCDE二叉树的后序遍历序列为DEBCA递归// 递归实现class Solution{public:vectorintpostorderTraversal(TreeNode*root){vectorintresult;postorderHelper(root,result);returnresult;}private:voidpostorderHelper(TreeNode*node,vectorintresult){if(!node)return;postorderHelper(node-left,result);// 遍历左子树postorderHelper(node-right,result);// 遍历右子树result.push_back(node-val);// 访问根节点}};迭代实现双栈法// 迭代实现双栈法vectorintpostorderTraversalTwoStacks(TreeNode*root){vectorintresult;if(!root)returnresult;stackTreeNode*stk1,stk2;stk1.push(root);while(!stk1.empty()){TreeNode*nodestk1.top();stk1.pop();stk2.push(node);if(node-left)stk1.push(node-left);if(node-right)stk1.push(node-right);}while(!stk2.empty()){result.push_back(stk2.top()-val);stk2.pop();}returnresult;}迭代实现// 迭代实现vectorintpostorderTraversalUnified(TreeNode*root){vectorintresult;stackTreeNode*stk;if(root)stk.push(root);while(!stk.empty()){TreeNode*nodestk.top();stk.pop();if(node){// 中右左的顺序入栈stk.push(node);// 中stk.push(nullptr);// 标记节点if(node-right)stk.push(node-right);// 右if(node-left)stk.push(node-left);// 左}else{// 遇到标记访问节点nodestk.top();stk.pop();result.push_back(node-val);}}returnresult;}广度优先遍历BFS层序遍历顺序从上到下从左到右逐层遍历// 基本层序遍历返回一维数组vectorintlevelOrder(TreeNode*root){vectorintresult;if(!root)returnresult;queueTreeNode*q;q.push(root);while(!q.empty()){TreeNode*nodeq.front();q.pop();result.push_back(node-val);if(node-left)q.push(node-left);if(node-right)q.push(node-right);}returnresult;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询