@二叉樹前序遍歷(遞迴)
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的所在子樹...