大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
python中怎么分析循环遍历二叉树,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
10年积累的成都网站设计、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有黑山免费网站建设让你可以放心的选择与我们合作。前序遍历
struct Node { Node*left; Node*right; int data; Node(){ func; } }; Node* create(Node*p, int depth) { if (p && depth) { p->left = new Node; p->right = new Node; p->data = depth; create(p->left, depth - 1); create(p->right, depth - 1); } if (!depth) { p->left = nullptr; p->right = nullptr; p->data = depth; } return p; } void print1(Node*p) { if (p) { cout << p->data << " "; print1(p->left); print1(p->right); } } void print2(Node*head)//利用stack 模拟函数调用过程 来遍历{ stacks; Node*p = head; { while (p) { s.push(p); cout << p->data << " "; p = p->left; } while (!s.empty()) { Node*pp = s.top(); if (pp->right && pp != head) { cout << pp->right->data << " "; } s.pop(); } } { p = head->right; while (p) { s.push(p); cout << p->data << " "; p = p->left; } while (!s.empty()) { Node*pp = s.top(); if (pp->right && pp != head) { cout << pp->right->data << " "; } s.pop(); } } } int main() { Node* head = new Node; create(head, 2); head->data = 10; head->left->data = 6; head->right->data = 14; head->left->left->data = 4; head->left->right->data = 8; head->right->left->data = 12; head->right->right->data = 16; print1(head);//递归遍历 cout << endl; print2(head);//循环遍历 system("pause"); return 0; }
中序
void print2(Node*head) { stacks; Node*p = head; { while (p) { s.push(p); // cout << p->data << " "; p = p->left; } while (!s.empty()) { Node*pp = s.top(); cout << pp->data << " "; if (pp->right && pp != head ) { cout << pp->right->data << " "; } s.pop(); } } { p = head->right; while (p) { s.push(p); p = p->left; } while (!s.empty()) { Node*pp = s.top(); cout << pp->data << " "; if (pp->right&& pp != head) { cout << pp->right->data << " "; } s.pop(); } } }
后序
void print2(Node*head) { stacks; Node*p = head; { while (p) { s.push(p); p = p->left; } while (!s.empty()) { Node*pp = s.top(); if (pp->right && pp != head ) { cout << pp->right->data << " "; } if ( pp != head) cout << pp->data << " "; s.pop(); } } { p = head->right; while (p) { s.push(p); p = p->left; } while (!s.empty()) { Node*pp = s.top(); if (pp->right&& pp != head) { cout << pp->right->data << " "; } cout << pp->data << " "; s.pop(); } } cout << head->data << " "; }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联-成都网站建设公司行业资讯频道,感谢您对创新互联的支持。