C++ 基于数组的二叉树删除和旋转
这是我的AST树类TreeNode是一个抽象类 让我们假设a[t]是[i]的左子代,在调用deletenodei之后,a[t]及其左子代应该被删除,而[t]的右子代应该成为[i]的新左子代 我真的不知道,我应该说这是我试过的,但我要说的是我的想法: 1-从[t]的右子代及其子代构建一棵新树,然后在[i]的左侧插入新树,我有一个函数可以将树插入树中,但这是一个非常糟糕、缓慢的算法 2-考虑在每个节点上应用某种关系,使a[i]=a[fi],然后删除a[fi],但我没有找到任何fi,并且有些节点不受删除的影响 我需要的是算法,没有别的,顾名思义,这是一个编译器项目,删除对于优化很重要,我需要它基于数组,因为宽度优先通过算法简单得多 一个与我类似的问题 。然而,它没有回答我的问题,也没有说任何关于旋转的事情 还有很多关于基于数组的二叉树的问题,而不是关于删除和旋转的问题 那么有没有一种快速算法可以做到这一点呢?谢谢你的帮助 附言 根目录是[0]而不是[1]。所以a[i]的左子代是a[2*i+1],右子代是a[2*i+2]C++ 基于数组的二叉树删除和旋转,c++,algorithm,tree,C++,Algorithm,Tree,这是我的AST树类TreeNode是一个抽象类 让我们假设a[t]是[i]的左子代,在调用deletenodei之后,a[t]及其左子代应该被删除,而[t]的右子代应该成为[i]的新左子代 我真的不知道,我应该说这是我试过的,但我要说的是我的想法: 1-从[t]的右子代及其子代构建一棵新树,然后在[i]的左侧插入新树,我有一个函数可以将树插入树中,但这是一个非常糟糕、缓慢的算法 2-考虑在每个节点上应用某种关系,使a[i]=a[fi],然后删除a[fi],但我没有找到任何fi,并且有些节点不受删
class AST
{
private:
TreeNode **a;
int capacity;
public:
void deletenode(const int &i);