二叉树的类:
struct Node
{
Node(int v = 0) :val(v),left(nullptr),right(nullptr) {};
int val;
Node *left;
Node *right;
};
先序遍历的递归版
//先序遍历----递归
void preorder_recursion(Node *node)
{
if (node)
cout << node->val << " ";
if (node->left)
preorder_recursion(node->left);
if(node->right)
preorder_recursion(node->right);
}
先序遍历-----栈(迭代版)
//先序遍历----循环
//用栈
void preorder_stack(Node *node)
{
if (!node)
return;
stack<Node*> node_s;
Node * left = node;
node_s.push(node);
while (!node_s.empty())
{
left = node_s.top();
node_s.pop();
cout<< left->val << " ";
if (left->right)
node_s.push(left->right);
if(left->left)
node_s.push(left->left);
}
}