分類 二叉樹

2021-08-21 16:20:46 字數 3766 閱讀 7626

@二叉樹前序遍歷(遞迴)

void preorder1(bintree *root)     //遞迴前序遍歷 

}

@二叉樹前序遍歷(非遞迴)

void preorder2(bintree *root)     //非遞迴前序遍歷 

if(!s.empty())

}}

@二叉樹中序遍歷(遞迴)

void inorder1(bintree *root)      //遞迴中序遍歷

}

@二叉樹中序遍歷(非遞迴)

void inorder2(bintree *root)      //非遞迴中序遍歷

if(!s.empty())

}

}

@二叉樹後序遍歷(遞迴)

void postorder1(bintree *root)    //遞迴後序遍歷

}

@二叉樹後序遍歷(非遞迴)

void postorder2(bintree *root)    //非遞迴後序遍歷

if(!s.empty())

else //第二次出現在棧頂

}}

}

@二叉樹層序遍歷

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class solution

res.push_back(cur);

cur.clear();

v2.swap(v1);

v2.clear();

}return res;

}};

@已知前序中序(或前序後續,或中序後序)重建二叉樹

treenode*

rebuild

(std::vector<

int> vec1, std::vector<

int> vec2)

;

@二叉樹映象

treenode*

mirror

(treenode* root)

;

@二叉樹的深度

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class

solution

return d;}}

;

@二叉樹中和為某一數值的路徑

std::vectorint>>

findpath

(treenode* root,

int num)

;

@中序(或前序,或後序)二叉樹的下乙個節點

treenode*

findnext

(treenode* root)

@判斷是否為對稱二叉樹

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

bool

isfunc

(treenode* root1, treenode* root2)

else}}

;

@判斷是否為平衡二叉樹

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class

solution

int a =

hight

(root->left)

;int b =

hight

(root->right)

;return

abs(a - b)

<=1&&

isbalanced

(root->left)

&&isbalanced

(root->right);}

inthight

(treenode* root)

return1+

max(

hight

(root->left)

,hight

(root->right));

}};

@判斷是否為二叉搜尋樹

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class

solution

else

if(root->right)

return blcal && blbst && brcal && brbst;

}return

false;}

intmaxval

(treenode* root)

if(q->right)

}return imax;

}int

minval

(treenode* root)

if(q->right)

}return imin;}}

;

@判斷是否相同的樹

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

else}}

;

二叉樹分類

二叉樹分類 滿二叉樹 對於國內的滿二叉樹 從圖形形態上看,滿二叉樹外觀上是乙個三角形。從數學上看,滿二叉樹的各個層的結點數形成乙個首項為1,公比為2的等比數列。對於國外的滿二叉樹 滿二叉樹的結點要麼是葉子結點,度為0,要麼是度為2的結點,不存在度為1的結點。完全二叉樹 設二叉樹的深度為h,除第 h ...

二叉樹的分類

二叉樹的分類 滿二叉樹 從高到低,除了葉節點外,所以節點左右節點都存在。完全二叉樹 比滿二叉樹少幾個葉節點,從左向右放子節點。平衡二叉樹 空樹或者它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹也都是平衡樹。二叉搜尋樹 空樹或者二叉樹的所有節點比他的左子節點大,比他的右子節點小。紅黑樹 不...

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...