首页 > 代码库 > 将二叉树转换成双向链表
将二叉树转换成双向链表
思路:采用中序遍历的方法,visit函数需要完成的功能为:
1、当前节点的左子节点指向上一次访问的节点;
2、将上一次访问节点的右子节点指向当前节点;
3、最后更新上一次访问节点为当前节点。
在第二步时需要判断上一次访问节点是不是为NULL,如果是,则第二步改为链表的头结点指向当前节点。
程序如下:
struct BSTnode { int data; BSTnode * left; BSTnode * right; }*pList,*pHead; void visit(BSTnode * pCurrent) { pCurrent->left = pList;//*当前节点的左子节点指向上一次访问的节点;*// if (pList != NULL) pList->right = pCurrent;//将上一次访问节点的右子节点指向当前节点// else pHead = pCurrent; pList = pCurrent; } void inorder(BSTnode* root) { if (root != NULL) { inorder(root->left); visit(root); inorder(root->right); } }
将二叉树转换成双向链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。