二叉樹專題 lintcode二叉樹的層序遍歷

2021-08-09 13:22:47 字數 1007 閱讀 7698

層序遍歷算是遍歷方式中,比較容易掌握的,實質就是寬度優先遍歷,bfs的基本**塊如下;

void bfs()

}

放到二叉樹的遍歷中來看,首先根節點入隊,根出隊,訪問根節點,再入隊左孩子,入隊右孩子;這樣再出隊時,就是訪問的第二層的左側......以此類推

我們來看看題目考察的方式

由以上的分析,容易想到先取到這一層的元素的個數,然後在裡面加一層迴圈即可

vector> levelorder(treenode *root) 

result.push_back(onelevel);}}

return result;

}

再來看看其他的要求:

第一道要求,返回從下往上遍歷的結果;我們只需要按照最初的從上向下的遍歷,得到[  [3],[9,20],[15,7]  ]後reverse一下即可

第二道題要求鋸齒形的遍歷,先從左往右,後從右往左,故只需要設定乙個標誌位,當從右往左時,我們對這一層的結果reverse即可

給出鋸齒形遍歷的**:

vector> zigzaglevelorder(treenode * root) 

if(!lefttoright) reverse(onelevel.begin(),onelevel.end());

result.push_back(onelevel);

lefttoright=!lefttoright;

}return result;

}

二叉樹專題

一般的樹 struct node node newnode int v void search node root,int x,int newdata if root data x search root lchild,x,newdata search root rchild,x,newdata 注...

二叉樹 二叉樹

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

LintCode 等價二叉樹

題目描述 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。樣例 1 1 2 2 and 2 2 4 4 就是兩棵等價的二叉樹。1 1 2 3 and 2 3 4 4就不是等價的。做題思路 本題給出的bool型別的函式來判斷二叉樹是否等價...