剑指offer中数据结构与算法部分学习

Posted keichiu.cheong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer中数据结构与算法部分学习相关的知识,希望对你有一定的参考价值。

2.3.4 树

遍历:前中后序,宽度优先。

二叉树的特例:二叉搜索树、堆(最大堆和最小堆,用于找最值)、红黑树(c++ STL中的很多数据结果就是基于这实现的);

题7-重建二叉树:递归,设置四个位点;

 1 class Solution {
 2 public:
 3     TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
 4         if(pre.size()!=vin.size()||vin.size()==0) return nullptr;
 5         return Construct(0,pre.size()-1,0,vin.size()-1,pre,vin);
 6     }
 7     
 8     TreeNode* Construct(int prestart,int preend,int vinstart,int vinend,const vector<int> &pre,const vector<int> &vin){
 9         if(prestart>preend) return nullptr;
10         TreeNode* root=new TreeNode(pre[prestart]);
11         for(int i=vinstart;i<=vinend;i++)
12             if(pre[prestart]==vin[i]){
13                 root->left=Construct(prestart+1,prestart+i-vinstart,vinstart,i-1,pre,vin);
14                 root->right=Construct(prestart+i-vinstart+1,preend,i+1,vinend,pre,vin);
15                 break;
16             }
17         return root;
18     }
19 };

 

题8-二叉树的下一个节点

 1 class Solution {
 2 public:
 3     TreeLinkNode* GetNext(TreeLinkNode* pNode)
 4     {
 5         if(pNode==nullptr) return nullptr;
 6         if(pNode->right!=nullptr){
 7             pNode=pNode->right;
 8             while(pNode->left!=nullptr){
 9                 pNode=pNode->left;
10             }
11             return pNode;
12         }
13         else{
14             if(pNode->next==nullptr)
15                 return nullptr;
16             else{
17                 if(pNode==pNode->next->left)
18                     return pNode->next;
19                 else{
20                     while(pNode->next!=nullptr){
21                         if(pNode==pNode->next->left)
22                             return pNode->next;
23                         pNode=pNode->next;
24                     }
25                     return nullptr;
26                 }
27             }
28         }
29     }
30 };

 

以上是关于剑指offer中数据结构与算法部分学习的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer算法总结

《剑指Offer:专项突破版》 - 链表部分 JavaScript 题解

《剑指Offer:专项突破版》 - 哈希表部分 JavaScript 题解

《剑指Offer:专项突破版》 - 整数部分 JavaScript 题解

《剑指Offer:专项突破版》 - 栈部分 JavaScript 题解

每日一书|剑指Offer,数据结构与算法名企面试题精讲