首页 > 编程知识 正文

后序遍历二叉树的非递归算法,二叉树的非递归遍历

时间:2023-05-05 10:12:54 阅读:14771 作者:2181

leetcode 144 .二叉树的前序扫描主题链接

赋予二叉树的根节点root,并返回该节点值之前的遍历。

结构趋势{ int val; TreeNode *left; TreeNode *right; treenode(:val )0)、left (nullptr )、right (nullptr ) treenode (intx ) :val ) x )、left (nullptr )、reeentx 递归的三个歌曲参数和返回值:输入根节点并输出遍历结果的向量

递归单层逻辑:将当前节点添加到结果集,并遍历其左侧和右侧的子树

递归函数的退出条件:如果当前节点为空,则返回

class Solution { vectorint result; //每次定义全局变量时保存遍历结果。 不能用递归函数定义。 递归函数是局部变量,当递归返回时,局部变量是public : vectorintpreordertraversal (treenode * root (if ) root==nullptr ) reter result.pptr 前三级(根左); 超级权限(根权限; 返回结果; }; 迭代解法如果当前节点不为空,则将其添加到结果集。 当前节点进入堆栈,当前节点更新为左边的孩子。 如果左边的孩子为空,当前节点将更新为右边的孩子,堆栈为空,当前节点为空并退出循环

vectorintpreordertraversal (treenode * root ) { vectorint result; 堆叠趋势节点*节点堆栈; wile (路线!=nullptr ||! 节点堆栈. empty () ) if (根!=nullptr(/如果当前节点不为空,则进入堆栈,当前节点与其左子女(result.push_back(root-val ) )相等的nodestack.push(root; 根=根左连续; //如果当前节点为空,则删除堆栈的顶层元素,堆栈顶层元素右边的树显示root=nodestack.top(-right; 节点堆栈. pop (; }返回结果; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。