码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-03-28 21:58:29      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:link   重建   next   public   restart   vector   结果   body   pre   

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中数据结构与算法部分学习

标签:link   重建   next   public   restart   vector   结果   body   pre   

原文地址:https://www.cnblogs.com/zhang-qc/p/8666129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!