二叉树复习

来源:互联网 发布:淘宝网店保证金怎么交 编辑:程序博客网 时间:2024/06/05 06:08

又开始欢乐地学习数据结构了。

今天要完成AVL树,先写个binary tree玩玩吧!

#include <cstdio>#include <stack>struct AVLNode{AVLNode* m_pLeft;AVLNode* m_pRight;int m_Value;int m_Bf;AVLNode(): m_pLeft(NULL), m_pRight(NULL), m_Value(-1), m_Bf(0){}AVLNode(int aValue): m_pLeft(NULL), m_pRight(NULL), m_Value(aValue), m_Bf(0){}};AVLNode* FindNode(AVLNode* apTree, int aValue){AVLNode* lpTree = apTree;while(NULL != lpTree){if (lpTree->m_Value == aValue){return lpTree;}else if (lpTree->m_Value > aValue){lpTree = lpTree->m_pLeft;}else{lpTree = lpTree->m_pRight;}}return lpTree;}void Insert(AVLNode*& apTree,int aValue){AVLNode* lpTree = apTree;AVLNode* lpNewNode = new AVLNode(aValue);if (NULL == lpNewNode){printf("Create NewNode failed.\n");return;}if (NULL == lpTree){apTree = lpNewNode;}else{AVLNode* lpParentNode = lpTree;while(NULL != lpTree){if (lpTree->m_Value == aValue){printf("Dupilate data.\n");return ;}else if (lpTree->m_Value > aValue){lpParentNode = lpTree;lpTree = lpTree->m_pLeft;}else{lpParentNode = lpTree;lpTree = lpTree->m_pRight;}}if (lpParentNode->m_Value > aValue){lpParentNode->m_pLeft = lpNewNode;}else{lpParentNode->m_pRight = lpNewNode;}}}void PrintNode(AVLNode* apNode){printf("%d ", apNode->m_Value);}void PrintTree(AVLNode* apTree){AVLNode* lpNode = apTree;std::stack<AVLNode*> lNodeStack;while(NULL != lpNode || !lNodeStack.empty()){while(NULL != lpNode){lNodeStack.push(lpNode);lpNode = lpNode->m_pLeft;}if (!lNodeStack.empty()){lpNode = lNodeStack.top();PrintNode(lpNode);lNodeStack.pop();lpNode = lpNode->m_pRight;}}}int main(){AVLNode* lpTree = NULL;Insert(lpTree,15);Insert(lpTree,3);Insert(lpTree,5);Insert(lpTree,7);Insert(lpTree,8);Insert(lpTree,10);PrintTree(lpTree);}


原创粉丝点击