1 、二叉樹節點
2、建立二叉樹節點
3、連線樹節點
4、列印樹節點
5、列印二叉樹
6、銷毀二叉樹
7、求二叉樹的深度
已知中序遍歷、後序遍歷、求前序遍歷。
已知前序遍歷、中序遍歷,求後序遍歷。
參考文獻
二叉樹是n(n>=0)個結點的有限集合,該集合或者為空集(稱為空二叉樹),或者由乙個根結點和兩棵互不相交的、分別稱為根結點的左子樹和右子樹組成。
由二叉樹定義以及圖示分析得出二叉樹有以下特點:
1)每個結點最多有兩顆子樹,所以二叉樹中不存在度大於2的結點。
2)左子樹和右子樹是有順序的,次序不能任意顛倒。
3)即使樹中某結點只有一棵子樹,也要區分它是左子樹還是右子樹。
1)在二叉樹的第i層上最多有2i-1 個節點 。(i>=1)
2)二叉樹中如果深度為k,那麼最多有2k-1個節點。(k>=1)
3)n0=n2+1 n0表示度數為0的節點數,n2表示度數為2的節點數。
4)在完全二叉樹中,具有n個節點的完全二叉樹的深度為[log2n]+1,其中[log2n]是向下取整。
5)若對含 n 個結點的完全二叉樹從上到下且從左至右進行 1 至 n 的編號,則對完全二叉樹中任意乙個編號為 i 的結點有如下特性:
(1) 若 i=1,則該結點是二叉樹的根,無雙親, 否則,編號為 [i/2] 的結點為其雙親結點;(2) 若 2i>n,則該結點無左孩子, 否則,編號為 2i 的結點為其左孩子結點;
(3) 若 2i+1>n,則該結點無右孩子結點, 否則,編號為2i+1 的結點為其右孩子結點。
struct binarytreenode
;
binarytreenode* createbinarytreenode(int value)
void connecttreenodes(binarytreenode* pparent, binarytreenode* pleft, binarytreenode* pright)
}
void printtreenode(const binarytreenode* pnode)
else
printf("\n");
}
void printtree(const binarytreenode* proot)
}
void destroytree(binarytreenode* proot)
}
int treedepth(const binarytreenode* proot)
#include#includeusing namespace std;
string s1, s2;
void print(int l1, int r1, int l2, int r2)
} //cout<<"k "
#include #include using namespace std;
struct treenode
};treenode * reconstructbinarytree(vectorpre, vectorin)
else if (j > i)
}root->left = reconstructbinarytree(pre_left, in_left);
root->right = reconstructbinarytree(pre_right, in_right);
return root;
}void print(vector&vec)
cout << endl; }}
void postorder(treenode* root) //後續遍歷
return;
}int main()
; vectorin = ;
cout << "前序遍歷為:" << endl;
print(pre);
cout << "中序遍歷為:" << endl;
print(in);
treenode* root = reconstructbinarytree(pre, in);
cout << "後序遍歷為:" << endl;
postorder(root);
system("pause");
return 0;
}
參考文章:
**參考:
資料結構之二叉樹基礎三
include include include include include include include include using namespace std struct btnode typedef struct btnode 重建二叉樹 1 用前序序列的第乙個結點作為根結點 2 在中序...
資料結構演算法基礎 之 二叉樹
樹節點 public class node public int getnum public node getleft public node getright public void setnum int num public void setleft node left public void ...
資料結構與演算法之二叉樹
樹同時具有鍊錶和陣列的優點,關於樹的術語有 根 樹頂端的節點 葉子節點 沒有子節點的節點 樹那個節點所對應的資料結構 節點物件類,包含資料 public class node 將資料插到樹中 public void inser int id,double dd public boolean dele...