144. 二叉树的前序遍历
注意事项
1、这种可能发生空指针异常的地方一定要进行非空指针判断。
2、迭代法:在左右节点入栈之前,要分别判别非空再入栈,否则将出错。
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
//迭代法就是用循环进行遍历的方式
//由于不知道二叉树的节点个数,因此用的应该是while循环语句
vector<int> res;//定义返回的数组
stack<TreeNode*> st;
if (root == NULL) return res;
st.push(root);
while (!st.empty()) {
TreeNode* node = st.top();
st.pop();
res.push_back(node->val);
if (node->right) st.push(node->right);
if (node->left) st.push(node->left);//需要分别判断左右指针不为空,然后各自入栈
}
return res;
}
};