通過輸入二叉樹的前序遍歷和中序遍歷重構二叉樹,
然後對二叉樹進行是否是對稱二叉樹的判斷。
1 #include2 #include3using
namespace
std;45
struct
treenode
10};
1112
//根據前序遍歷和中序遍歷重構二叉樹
13 treenode* reconstructbinarytree(vectorpre, vectorvin) 25}
26 vectorpre_left, pre_right, vin_left, vin_right;
27for (int i = 0; i < root_index; i++)
3132
for (int i = root_index + 1; i < pre.size(); i++)
3637 root->left =reconstructbinarytree(pre_left, vin_left);
38 root->right =reconstructbinarytree(pre_right, vin_right);
3940
return
root;41}
4243
44//
判斷是否是對稱的
45bool issymmetrical(treenode* p1, treenode*p2)
5455
56bool issymmetrical(treenode*proot)
60return
issymmetrical(proot, proot);61}
6263
64int
main()
74 cout << "
請輸入中序遍歷:
判斷二叉樹是否平衡 是否完全二叉樹 是否二叉排序樹
1.判斷二叉樹是否平衡 求樹的高度 int treedepth node t return0 判斷二叉樹是否平衡 int isbalanced node t 2.判斷二叉樹是否相同 判斷兩棵二叉樹是否相同 int comptree node tree1,node tree2 拷貝二叉樹 void c...
二叉樹 判斷二叉樹是否為完全二叉樹
問題描述 判斷一棵二叉樹是否為完全二叉樹。知識點 完全二叉樹是指除二叉樹的最後一層外,其他各層的節點數達到最大個數,且最後一層的葉節點從左到右連續存在,只缺右側若干節點。演算法實現 class node is complete binary tree public static boolean is...
判斷二叉樹是否為平衡二叉樹
一 線性思維 遍歷每個節點都時候,求左右子樹的深度,如果左右子樹深度相差不超過1,繼續遞迴遍歷左右節點,此種方法會重複遍歷,時間效率不高 is balanced t if t is null return true left treedepth t.left right treedepth t.ri...