首页 > 编程知识 正文

k形成元素是什么意思,平衡二叉树查找时间复杂度

时间:2023-05-04 19:12:35 阅读:167621 作者:211

# include iostream # include list # include queue # includevectorusingnamespacestd; //节点定义struct TreeNode { int val; int size; TreeNode* left; TreeNode* right; treenode(intx ) : val(x ) x、size(0)0)、left (null )、right (null ) }; //以分层遍历方式执行voidcreatetree(treenode*root ) { int fa,lson,rson; cin fa lson rson; if(LSON ) treenode*left=newtreenode ) LSON; 根-左=左创建树(根-左; (if ) rson ) treenode*right=newtreenode ) rson; 根权限=权限; create tree (根权限; }//打印树中每个节点值及其节点的顺序voidprinttree(treenode*root ) if ) root==nullptr ) cout 'No element' endl; queueTreeNode* q; q .推式(根); while (! q.empty () { int sz=q.size; for(intI=0; i sz; I({treenode*node=q.front ); q.pop (; cout node-val ' ' node-size endl; 节点左(if ) q.push )节点左; (if ) node-right ) q.push ) node-right; } } } cout endl; (/) )之后遍历来构筑位次时,将当前节点作为根节点的子树节点的数量之和intpostorder(treenode*root ) if ) root==nullptr ) return 0; int left=postorder (根左); intright=postorder(root-right; root-size=left right 1; 返回根大小; (//k找到第三小元素int ans=0的void find _ kth _ min _ element (treenode * root,int k ) { int rank=root-left==nullptr 1:根-left-size1; if(krank ) find_KTH_min_element(root-left,k ); elseif(krank ) find _ kth _ min _ element (root-right,k - rank ); else ans=root-val; //树voiddestroytree(treenode*root ) if ) root==nullptr ) return; 根左(if )深度树(root-left ); 根写入(if )深度树(root-right ); 删除根; (}int main ) ) { int num,root_val; cout ' inputthenumberofnodesandrootvalue : ' endl; cin num root_val; treenode * root=new treenode (root _ val ); //建立cout 'input root,lson,rson in order:' endl; 创建树(root ); cout 'Build over.' endl; //稍后遍历并设置每个节点的rankpostorder(root ); //打印树cout ' traversetreeinlevelmethod : (rootvalueandsize ) ' endl; 打印树(root ); //k寻找第三小元素int k; cout ' inputthekth-elementtobefind : ' endl; cin k; find_KTH_min_element(root,k ); cout ' the ' k ' thminelementis : ' ans endl; cout 'Destroy over.' endl,丢弃树删除树(root ); 返回0; }测试输入:

inputthenumberofnodesandrootvalue :75 input root,lson,rson in order 3360527214100430076060 build over.traversetreeinlevevelmmmer 57247211426131 inputthekth-elementtobefind :6 the6 thminelementis :6 destroy over .二叉搜索树结构:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。