力扣94:递归之美 轻松掌握二叉树中序遍历
题目解读
二叉树的中序遍历是一种基础且重要的树遍历方式,其遍历顺序为:先递归地中序遍历左子树,然后访问根节点,最后递归地中序遍历右子树。对于二叉搜索树,中序遍历的结果恰好是节点值的升序排列。给定一个二叉树的根节点,我们需要按照这个顺序访问所有节点,并将它们的值存储在一个列表中返回。这个问题虽然简单,但却是理解更复杂树算法的基础。
解题思路与过程
用递归方法来轻松实现中序遍历。定义一个成员变量ret来存储遍历结果,以及一个辅助函数inorder来完成实际的递归遍历。当遇到空节点时直接返回,否则先递归处理左子树,然后将当前节点的值加入结果列表,最后递归处理右子树。主函数inorderTraversal初始化遍历过程并返回最终结果。
代码实现与注释
class Solution { public: vector<int> ret; // 存储遍历结果的容器 // 递归中序遍历辅助函数 void inorder(TreeNode* root) { if(!root) // 递归终止条件:空节点 { return; } inorder(root->left); // 递归遍历左子树 ret.push_back(root->val); // 访问当前节点(根) inorder(root->right); // 递归遍历右子树 } // 主函数:初始化遍历过程并返回结果 vector<int> inorderTraversal(TreeNode* root) { inorder(root); // 开始递归遍历 return ret; // 返回遍历结果 } };
原创内容 转载请注明出处