vector<int> preorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode*> s; TreeNode* p = root;
时间: 2024-04-26 22:27:02 浏览: 96
Pre-order-binary-tree-traversal.rar_pre_pre-orderC语言
这段代码是用来实现二叉树的前序遍历的。
首先,定义了一个 vector<int> 类型的变量 res,用来存储遍历结果。
接着,定义了一个 stack<TreeNode*> 类型的变量 s,用来存储待遍历的节点。将二叉树的根节点指针 root 赋值给指针变量 p。
接下来,进入循环,判断条件为:p 不为空,或者栈不为空。这个条件的意义是,只要二叉树还没有遍历完,就需要继续遍历。
在循环中,首先判断当前节点 p 是否为空。如果不为空,就将其值加入到 res 中,并将其入栈。然后将指针 p 移动到其左子树。
如果当前节点 p 为空,说明已经遍历完了当前子树。此时需要从栈中取出一个节点,将指针 p 指向其右子树。由于前序遍历的顺序是“根-左-右”,因此要先遍历右子树,再遍历左子树。
最后,当循环结束时,返回遍历结果 res 即可。
阅读全文