非递归遍历二叉树

// // 非递归中序遍历二叉树 // void InOrder(struct Node* root) { if (root == NULL) return; struct Node *t = root; stack s; while (t != NULL || !s.empty()) { while (t != NULL) { s.push(t); // 压栈 t = t->left; } if (!s.empty()) { t = s.top(); cout << t->data << ' '; // 访问中间节点 t = t->right; // 相当于递归中序遍历右子树 s.pop(); } } cout << endl; } // // 非递归先序遍历二叉树 // void PreOrder(struct Node* root) { if (root == NULL) return; struct Node *t = root; stack s; while (t != NULL || !s.empty()) { while (t != NULL) { cout << t->data << ' '; // 先访问,再压栈 s.push(t); t = t->left; } if (!s.empty()) { t = s.top(); t = t->right; s.pop(); } } cout << endl; }

你可能感兴趣的:(数据结构/算法,null,struct)