二叉樹相關

2022-07-08 23:00:29 字數 1738 閱讀 1467

廣度優先遍歷

**:對於每層的節點,放到乙個用來處理節點佇列裡,另外每個佇列對應乙個vector,將每層節點放進vector

對於每個佇列,彈出先放的元素q.front,將這個元素放進vector,

隨後,將左節點和右子節點放進佇列

class solution 

queue q;

q.push(root);

while (!q.empty())

}return ret;

}};

226 翻轉二叉樹

class solution 

swap(root->left,root->right);

inverttree(root->left);

inverttree(root->right);

return root;

}};

迭代法,使用棧進行前序遍歷

class solution 

return root;

}};

101 對稱二叉樹

//重點在於遞迴的時候左右節點的選擇

class solution else if(left == nullptr && right!=nullptr)

else if(left!=nullptr && right==nullptr)

else if(left->val != right->val)

//開始遞迴子樹

//判斷內側

bool insidesame = compare(left->right,right->left);

//判斷外側

bool outsidesame = compare(left->left,right->right);

bool same = insidesame && outsidesame;

return same;

}bool issymmetric(treenode* root)

return compare(root->left,root->right);

}};

完全二叉樹 的定義如下:在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。

若最底層為第 h 層,則該層包含 1~ 2h 個節點。滿二叉樹是一種特殊的二叉樹.

普通的二叉樹個數計算:

class solution 

int leftnum = countnodes(root->left);

int rightnum = countnodes(root->right);

num = leftnum+rightnum + 1;

return num;

}};

完全二叉樹個數

這道題可以用滿二叉樹的性質優化計算

class solution 

treenode* left = root->left;

treenode* right = root->right;

int lefth = 0,righth =0;

while(left)

while(right)

//如果左右子樹高度相同,則是滿二叉樹

if(lefth == righth)

};

二叉樹相關

1.首先建立乙個樹節點,節點有值,左節點和右節點 author 張夢楠 title package description date 2018 5 2519 27 blog www.itzmn.com 樹的節點類 public class treenode public treenode int v...

二叉樹 二叉樹的相關操作

遞迴實現 建立求樹高 求葉子數 求節點數 統計度為2的結點個數 後序輸出 先序輸出 中序輸出 交換左右子樹 include include include define true 1 define false 0 define ok 1 define error 0 define overflow ...

二叉樹相關演算法

節點 class node t public node t left public node t right public node t value,node t left,node t right public node t value this value,null null 二叉樹 前中後深度...